aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVikas Pachdha <vikas.pachdha@qt.io>2018-07-03 11:51:28 +0200
committerVikas Pachdha <vikas.pachdha@qt.io>2018-07-09 08:16:22 +0000
commitf19a6e8ac2c76e323875e4dc02b53c58aa887afe (patch)
tree3fcecbac55ae6c903dbfb9bbe4fc0aa02aa2882c /src
parent299da013325be20ff731b91e7ead47b20242b1cd (diff)
Android: Add API's to run Android SDK tools
Task-number: QDS-16 Change-Id: Ifea5aa17330833cd130555778134fb8f90e2d990 Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/android/androidmanager.cpp51
-rw-r--r--src/plugins/android/androidmanager.h3
2 files changed, 37 insertions, 17 deletions
diff --git a/src/plugins/android/androidmanager.cpp b/src/plugins/android/androidmanager.cpp
index de927adc41c..c52bd5f8eeb 100644
--- a/src/plugins/android/androidmanager.cpp
+++ b/src/plugins/android/androidmanager.cpp
@@ -54,6 +54,7 @@
#include <QDir>
#include <QFileSystemWatcher>
#include <QList>
+#include <QLoggingCategory>
#include <QProcess>
#include <QRegExp>
#include <QMessageBox>
@@ -67,6 +68,20 @@ namespace {
const QLatin1String AndroidDeviceSn("AndroidDeviceSerialNumber");
const QLatin1String ApiLevelKey("AndroidVersion.ApiLevel");
+ Q_LOGGING_CATEGORY(androidManagerLog, "qtc.android.androidManager")
+
+ bool runCommand(const QString &executable, const QStringList &args,
+ QString *output = nullptr, int timeoutS = 30)
+ {
+ Utils::SynchronousProcess cmdProc;
+ cmdProc.setTimeoutS(timeoutS);
+ qCDebug(androidManagerLog) << executable << args.join(' ');
+ Utils::SynchronousProcessResponse response = cmdProc.runBlocking(executable, args);
+ if (output)
+ *output = response.allOutput();
+ return response.result == Utils::SynchronousProcessResponse::Finished;
+ }
+
} // anonymous namespace
namespace Android {
@@ -364,16 +379,9 @@ void AndroidManager::cleanLibsOnDevice(ProjectExplorer::Target *target)
Core::MessageManager::write(tr("Starting Android virtual device failed."));
}
- QProcess *process = new QProcess();
QStringList arguments = AndroidDeviceInfo::adbSelector(deviceSerialNumber);
arguments << QLatin1String("shell") << QLatin1String("rm") << QLatin1String("-r") << QLatin1String("/data/local/tmp/qt");
- QObject::connect(process, static_cast<void (QProcess::*)(int)>(&QProcess::finished),
- process, &QObject::deleteLater);
- const QString adb = AndroidConfigurations::currentConfig().adbToolPath().toString();
- Core::MessageManager::write(adb + QLatin1Char(' ') + arguments.join(QLatin1Char(' ')));
- process->start(adb, arguments);
- if (!process->waitForStarted(500))
- delete process;
+ runAdbCommandDetached(arguments);
}
void AndroidManager::installQASIPackage(ProjectExplorer::Target *target, const QString &packagePath)
@@ -393,17 +401,9 @@ void AndroidManager::installQASIPackage(ProjectExplorer::Target *target, const Q
Core::MessageManager::write(tr("Starting Android virtual device failed."));
}
- QProcess *process = new QProcess();
QStringList arguments = AndroidDeviceInfo::adbSelector(deviceSerialNumber);
arguments << QLatin1String("install") << QLatin1String("-r ") << packagePath;
-
- connect(process, static_cast<void (QProcess::*)(int)>(&QProcess::finished),
- process, &QObject::deleteLater);
- const QString adb = AndroidConfigurations::currentConfig().adbToolPath().toString();
- Core::MessageManager::write(adb + QLatin1Char(' ') + arguments.join(QLatin1Char(' ')));
- process->start(adb, arguments);
- if (!process->waitForStarted(500) && process->state() != QProcess::Running)
- delete process;
+ runAdbCommandDetached(arguments);
}
bool AndroidManager::checkKeystorePassword(const QString &keystorePath, const QString &keystorePasswd)
@@ -596,4 +596,21 @@ int AndroidManager::findApiLevel(const Utils::FileName &platformPath)
return apiLevel;
}
+void AndroidManager::runAdbCommandDetached(const QStringList &args)
+{
+ QProcess *process = new QProcess();
+ connect(process, static_cast<void (QProcess::*)(int)>(&QProcess::finished),
+ process, &QObject::deleteLater);
+ const QString adb = AndroidConfigurations::currentConfig().adbToolPath().toString();
+ qCDebug(androidManagerLog) << adb << args.join(' ');
+ process->start(adb, args);
+ if (!process->waitForStarted(500) && process->state() != QProcess::Running)
+ delete process;
+}
+
+bool AndroidManager::runAdbCommand(const QStringList &args, QString *output)
+{
+ return runCommand(AndroidConfigurations::currentConfig().adbToolPath().toString(),
+ args, output);
+}
} // namespace Android
diff --git a/src/plugins/android/androidmanager.h b/src/plugins/android/androidmanager.h
index b1ce3321317..1c79a236311 100644
--- a/src/plugins/android/androidmanager.h
+++ b/src/plugins/android/androidmanager.h
@@ -87,6 +87,9 @@ public:
static AndroidQtSupport *androidQtSupport(ProjectExplorer::Target *target);
static bool updateGradleProperties(ProjectExplorer::Target *target);
static int findApiLevel(const Utils::FileName &platformPath);
+
+ static void runAdbCommandDetached(const QStringList &args);
+ static bool runAdbCommand(const QStringList &args, QString *output = nullptr);
};
} // namespace Android