diff --git a/src/plugins/android/androidavdmanager.cpp b/src/plugins/android/androidavdmanager.cpp index a0b1a0117f3..9f3b5484a2c 100644 --- a/src/plugins/android/androidavdmanager.cpp +++ b/src/plugins/android/androidavdmanager.cpp @@ -234,6 +234,23 @@ QString AndroidAvdManager::startAvd(const QString &name) const return QString(); } +static bool is32BitUserSpace() +{ + // Do a similar check as android's emulator is doing: + if (HostOsInfo::isLinuxHost()) { + if (QSysInfo::WordSize == 32) { + QtcProcess proc; + proc.setTimeoutS(3); + proc.setCommand({"getconf", {"LONG_BIT"}}); + proc.runBlocking(); + if (proc.result() != ProcessResult::FinishedWithSuccess) + return true; + return proc.allOutput().trimmed() == "32"; + } + } + return false; +} + bool AndroidAvdManager::startAvdAsync(const QString &avdName) const { const FilePath emulator = m_config.emulatorToolPath(); @@ -267,7 +284,7 @@ bool AndroidAvdManager::startAvdAsync(const QString &avdName) const // start the emulator CommandLine cmd(m_config.emulatorToolPath()); - if (AndroidConfigurations::force32bitEmulator()) + if (is32BitUserSpace()) cmd.addArg("-force-32bit"); cmd.addArgs(m_config.emulatorArgs(), CommandLine::Raw); diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp index 8c5b4c33249..b529d882f62 100644 --- a/src/plugins/android/androidconfigurations.cpp +++ b/src/plugins/android/androidconfigurations.cpp @@ -123,30 +123,6 @@ namespace { { return Core::ICore::installerResourcePath("android.xml").toString(); } - - static bool is32BitUserSpace() - { - // Do the exact same check as android's emulator is doing: - if (HostOsInfo::isLinuxHost()) { - if (QSysInfo::WordSize == 32 ) { - Environment env = Environment::systemEnvironment(); - FilePath executable = env.searchInPath("file"); - QString shell = env.value(QLatin1String("SHELL")); - if (executable.isEmpty() || shell.isEmpty()) - return true; // we can't detect, but creator is 32bit so assume 32bit - - QtcProcess proc; - proc.setProcessChannelMode(QProcess::MergedChannels); - proc.setTimeoutS(30); - proc.setCommand({executable, {shell}}); - proc.runBlocking(); - if (proc.result() != ProcessResult::FinishedWithSuccess) - return true; - return !proc.allOutput().contains("x86-64"); - } - } - return false; - } } ////////////////////////////////// @@ -1403,11 +1379,6 @@ void AndroidConfigurations::updateAutomaticKitList() KitManager::deregisterKit(k); } -bool AndroidConfigurations::force32bitEmulator() -{ - return m_instance->m_force32bit; -} - Environment AndroidConfigurations::toolsEnvironment(const AndroidConfig &config) { Environment env = Environment::systemEnvironment(); @@ -1449,7 +1420,6 @@ AndroidConfigurations::AndroidConfigurations() connect(DeviceManager::instance(), &DeviceManager::devicesLoaded, this, &AndroidConfigurations::updateAndroidDevice); - m_force32bit = is32BitUserSpace(); m_instance = this; } diff --git a/src/plugins/android/androidconfigurations.h b/src/plugins/android/androidconfigurations.h index de604cef289..48ca6cc66d4 100644 --- a/src/plugins/android/androidconfigurations.h +++ b/src/plugins/android/androidconfigurations.h @@ -215,7 +215,6 @@ private: static AndroidConfigurations *m_instance; AndroidConfig m_config; std::unique_ptr m_sdkManager; - bool m_force32bit; }; } // namespace Android