diff options
Diffstat (limited to 'src/plugins/android/androidconfigurations.cpp')
-rw-r--r-- | src/plugins/android/androidconfigurations.cpp | 104 |
1 files changed, 38 insertions, 66 deletions
diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp index 34593bb340..65d8031463 100644 --- a/src/plugins/android/androidconfigurations.cpp +++ b/src/plugins/android/androidconfigurations.cpp @@ -57,9 +57,9 @@ #include <utils/hostosinfo.h> #include <utils/persistentsettings.h> #include <utils/qtcassert.h> +#include <utils/qtcprocess.h> #include <utils/runextensions.h> #include <utils/stringutils.h> -#include <utils/synchronousprocess.h> #include <QApplication> #include <QDirIterator> @@ -91,7 +91,7 @@ static Q_LOGGING_CATEGORY(avdConfigLog, "qtc.android.androidconfig", QtWarningMs namespace Android { using namespace Internal; -const char JsonFilePath[] = "/android/sdk_definitions.json"; +const char JsonFilePath[] = "android/sdk_definitions.json"; const char SdkToolsUrlKey[] = "sdk_tools_url"; const char CommonKey[] = "common"; const char SdkEssentialPkgsKey[] = "sdk_essential_packages"; @@ -142,7 +142,7 @@ namespace { static QString sdkSettingsFileName() { - return Core::ICore::installerResourcePath() + "/android.xml"; + return Core::ICore::installerResourcePath("android.xml").toString(); } static bool is32BitUserSpace() @@ -159,10 +159,11 @@ namespace { SynchronousProcess proc; proc.setProcessChannelMode(QProcess::MergedChannels); proc.setTimeoutS(30); - SynchronousProcessResponse response = proc.runBlocking({executable, {shell}}); - if (response.result != SynchronousProcessResponse::Finished) + proc.setCommand({executable, {shell}}); + proc.runBlocking(); + if (proc.result() != QtcProcess::Finished) return true; - return !response.allOutput().contains("x86-64"); + return !proc.allOutput().contains("x86-64"); } } return false; @@ -270,21 +271,22 @@ void AndroidConfig::save(QSettings &settings) const void AndroidConfig::parseDependenciesJson() { - QString sdkConfigUserFile(Core::ICore::userResourcePath() + JsonFilePath); - QString sdkConfigFile(Core::ICore::resourcePath() + JsonFilePath); + const FilePath sdkConfigUserFile = Core::ICore::userResourcePath(JsonFilePath); + const FilePath sdkConfigFile = Core::ICore::resourcePath(JsonFilePath); - if (!QFile::exists(sdkConfigUserFile)) { - QDir(QFileInfo(sdkConfigUserFile).absolutePath()).mkpath("."); - QFile::copy(sdkConfigFile, sdkConfigUserFile); + if (!sdkConfigUserFile.exists()) { + QDir(sdkConfigUserFile.toFileInfo().absolutePath()).mkpath("."); + QFile::copy(sdkConfigFile.toString(), sdkConfigUserFile.toString()); } - if (QFileInfo(sdkConfigFile).lastModified() > QFileInfo(sdkConfigUserFile).lastModified()) { - QFile::remove(sdkConfigUserFile + ".old"); - QFile::rename(sdkConfigUserFile, sdkConfigUserFile + ".old"); - QFile::copy(sdkConfigFile, sdkConfigUserFile); + if (sdkConfigFile.toFileInfo().lastModified() > sdkConfigUserFile.toFileInfo().lastModified()) { + const QString oldUserFile = (sdkConfigUserFile + ".old").toString(); + QFile::remove(oldUserFile); + QFile::rename(sdkConfigUserFile.toString(), oldUserFile); + QFile::copy(sdkConfigFile.toString(), sdkConfigUserFile.toString()); } - QFile jsonFile(sdkConfigUserFile); + QFile jsonFile(sdkConfigUserFile.toString()); if (!jsonFile.open(QIODevice::ReadOnly)) { qCDebug(avdConfigLog, "Couldn't open JSON config file %s.", qPrintable(jsonFile.fileName())); return; @@ -560,14 +562,15 @@ QVector<AndroidDeviceInfo> AndroidConfig::connectedDevices(const FilePath &adbTo SynchronousProcess adbProc; adbProc.setTimeoutS(30); CommandLine cmd{adbToolPath, {"devices"}}; - SynchronousProcessResponse response = adbProc.runBlocking(cmd); - if (response.result != SynchronousProcessResponse::Finished) { + adbProc.setCommand(cmd); + adbProc.runBlocking(); + if (adbProc.result() != QtcProcess::Finished) { if (error) *error = QApplication::translate("AndroidConfiguration", "Could not run: %1") .arg(cmd.toUserOutput()); return devices; } - QStringList adbDevs = response.allOutput().split('\n', Qt::SkipEmptyParts); + QStringList adbDevs = adbProc.allOutput().split('\n', Qt::SkipEmptyParts); if (adbDevs.empty()) return devices; @@ -628,11 +631,12 @@ QString AndroidConfig::getDeviceProperty(const FilePath &adbToolPath, const QStr SynchronousProcess adbProc; adbProc.setTimeoutS(10); - SynchronousProcessResponse response = adbProc.runBlocking(cmd); - if (response.result != SynchronousProcessResponse::Finished) + adbProc.setCommand(cmd); + adbProc.runBlocking(); + if (adbProc.result() != QtcProcess::Finished) return QString(); - return response.allOutput(); + return adbProc.allOutput(); } int AndroidConfig::getSDKVersion(const FilePath &adbToolPath, const QString &device) @@ -725,11 +729,12 @@ QStringList AndroidConfig::getAbis(const FilePath &adbToolPath, const QString &d arguments << "shell" << "getprop" << "ro.product.cpu.abilist"; SynchronousProcess adbProc; adbProc.setTimeoutS(10); - SynchronousProcessResponse response = adbProc.runBlocking({adbToolPath, arguments}); - if (response.result != SynchronousProcessResponse::Finished) + adbProc.setCommand({adbToolPath, arguments}); + adbProc.runBlocking(); + if (adbProc.result() != QtcProcess::Finished) return result; - QString output = response.allOutput().trimmed(); + QString output = adbProc.allOutput().trimmed(); if (!output.isEmpty()) { QStringList result = output.split(QLatin1Char(',')); if (!result.isEmpty()) @@ -747,11 +752,12 @@ QStringList AndroidConfig::getAbis(const FilePath &adbToolPath, const QString &d SynchronousProcess abiProc; abiProc.setTimeoutS(10); - SynchronousProcessResponse abiResponse = abiProc.runBlocking({adbToolPath, arguments}); - if (abiResponse.result != SynchronousProcessResponse::Finished) + abiProc.setCommand({adbToolPath, arguments}); + abiProc.runBlocking(); + if (abiProc.result() != QtcProcess::Finished) return result; - QString abi = abiResponse.allOutput().trimmed(); + QString abi = abiProc.allOutput().trimmed(); if (abi.isEmpty()) break; result << abi; @@ -855,7 +861,7 @@ QVersionNumber AndroidConfig::ndkVersion(const FilePath &ndkPath) const const FilePath ndkReleaseTxtPath = ndkPath.pathAppended("RELEASE.TXT"); Utils::FileReader reader; QString errorString; - if (reader.fetch(ndkReleaseTxtPath.toString(), &errorString)) { + if (reader.fetch(ndkReleaseTxtPath, &errorString)) { // RELEASE.TXT contains the ndk version in either of the following formats: // r6a // r10e (64 bit) @@ -1376,40 +1382,15 @@ bool AndroidConfigurations::force32bitEmulator() return m_instance->m_force32bit; } -QProcessEnvironment AndroidConfigurations::toolsEnvironment(const AndroidConfig &config) +Environment AndroidConfigurations::toolsEnvironment(const AndroidConfig &config) { Environment env = Environment::systemEnvironment(); - Utils::FilePath jdkLocation = config.openJDKLocation(); + FilePath jdkLocation = config.openJDKLocation(); if (!jdkLocation.isEmpty()) { env.set("JAVA_HOME", jdkLocation.toUserOutput()); env.prependOrSetPath(jdkLocation.pathAppended("bin").toUserOutput()); } - return env.toProcessEnvironment(); -} - -/** - * Workaround for '????????????' serial numbers - * @return ("-d") for buggy devices, ("-s", <serial no>) for normal - */ -QStringList AndroidDeviceInfo::adbSelector(const QString &serialNumber) -{ - if (serialNumber.startsWith(QLatin1String("????"))) - return QStringList("-d"); - return QStringList({"-s", serialNumber}); -} - -bool AndroidDeviceInfo::operator<(const AndroidDeviceInfo &other) const -{ - if (serialNumber.contains("????") != other.serialNumber.contains("????")) - return !serialNumber.contains("????"); - if (type != other.type) - return type == AndroidDeviceInfo::Hardware; - if (sdk != other.sdk) - return sdk < other.sdk; - if (avdname != other.avdname) - return avdname < other.avdname; - - return serialNumber < other.serialNumber; + return env; } const AndroidConfig &AndroidConfigurations::currentConfig() @@ -1560,13 +1541,4 @@ void AndroidConfigurations::updateAndroidDevice() AndroidConfigurations *AndroidConfigurations::m_instance = nullptr; -QDebug &operator<<(QDebug &stream, const AndroidDeviceInfo &device) -{ - stream << "Type:"<< (device.type == AndroidDeviceInfo::Emulator ? "Emulator" : "Device") - << ", ABI:" << device.cpuAbi << ", Serial:" << device.serialNumber - << ", Name:" << device.avdname << ", API:" << device.sdk - << ", Authorised:" << !device.unauthorized; - return stream; -} - } // namespace Android |