summaryrefslogtreecommitdiff
path: root/src/plugins/android/androidconfigurations.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/android/androidconfigurations.cpp')
-rw-r--r--src/plugins/android/androidconfigurations.cpp104
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