aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/android
diff options
context:
space:
mode:
authorVikas Pachdha <vikas.pachdha@qt.io>2019-03-13 14:38:18 +0100
committerVikas Pachdha <vikas.pachdha@qt.io>2019-03-21 12:54:17 +0000
commit6ff0f947683552a3556d49b1078b00bfc95ebcd2 (patch)
treed93cd4e07ba84be90c1aeaf1fb1bf4f38240dd51 /src/plugins/android
parentfa0a2d97e9f05e40e0bf856cf68aee51ab452ae9 (diff)
Android: Fix process id parsing for API 22
Task-number: QTCREATORBUG-22098 Change-Id: I8aeed9179538689083aacf9487ae0dca8feaed97 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src/plugins/android')
-rw-r--r--src/plugins/android/androidrunnerworker.cpp26
1 files changed, 11 insertions, 15 deletions
diff --git a/src/plugins/android/androidrunnerworker.cpp b/src/plugins/android/androidrunnerworker.cpp
index aed4e60d7ef..4a4386740b4 100644
--- a/src/plugins/android/androidrunnerworker.cpp
+++ b/src/plugins/android/androidrunnerworker.cpp
@@ -95,14 +95,14 @@ static bool isTimedOut(const chrono::high_resolution_clock::time_point &start,
return timedOut;
}
-static qint64 extractPID(const QString &output, const QString &packageName)
+static qint64 extractPID(const QByteArray &output, const QString &packageName)
{
qint64 pid = -1;
foreach (auto tuple, output.split('\n')) {
tuple = tuple.simplified();
if (!tuple.isEmpty()) {
auto parts = tuple.split(':');
- QString commandName = parts.first();
+ QString commandName = QString::fromLocal8Bit(parts.first());
if (parts.length() == 2 && commandName == packageName) {
pid = parts.last().toLongLong();
break;
@@ -121,18 +121,17 @@ static void findProcessPID(QFutureInterface<qint64> &fi, QStringList selector,
qint64 processPID = -1;
chrono::high_resolution_clock::time_point start = chrono::high_resolution_clock::now();
-
- selector.append("shell");
- selector.append(preNougat ? pidScriptPreNougat : pidScript.arg(packageName));
-
do {
QThread::msleep(200);
- SdkToolResult result = AndroidManager::runAdbCommand(selector);
+ QString adbPath = AndroidConfigurations::currentConfig().adbToolPath().toString();
+ selector.append("shell");
+ selector.append(preNougat ? pidScriptPreNougat : pidScript.arg(packageName));
+ const auto out = Utils::SynchronousProcess().runBlocking(adbPath, selector).allRawOutput();
if (preNougat) {
- processPID = extractPID(result.stdOut(), packageName);
+ processPID = extractPID(out, packageName);
} else {
- if (!result.stdOut().isEmpty())
- processPID = result.stdOut().trimmed().toLongLong();
+ if (!out.isEmpty())
+ processPID = out.trimmed().toLongLong();
}
} while (processPID == -1 && !isTimedOut(start) && !fi.isCanceled());
@@ -321,11 +320,8 @@ void AndroidRunnerWorker::forceStop()
runAdb({"shell", "am", "force-stop", m_packageName});
// try killing it via kill -9
- QString out;
- runAdb({"shell", pidScriptPreNougat}, &out);
- qint64 pid = extractPID(out.simplified(), m_packageName);
- if (pid != -1)
- adbKill(pid);
+ if (m_processPID != -1)
+ adbKill(m_processPID);
}
void AndroidRunnerWorker::logcatReadStandardError()