Android: fix app logcat not always displayed

Fixes: QTCREATORBUG-23919
Fixes: QTCREATORBUG-23177
Task-number: QTCREATORBUG-23291
Change-Id: Ib053a15f2fd8e491a581268f3630725593186a47
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
This commit is contained in:
Assam Boudjelthia
2020-07-09 14:12:50 +03:00
parent 2fa261c132
commit 5bb462e070

View File

@@ -127,21 +127,23 @@ static void findProcessPID(QFutureInterface<qint64> &fi, QStringList selector,
if (packageName.isEmpty()) if (packageName.isEmpty())
return; return;
QStringList args = {selector};
FilePath adbPath = AndroidConfigurations::currentConfig().adbToolPath();
args.append("shell");
args.append(preNougat ? pidScriptPreNougat : pidScript.arg(packageName));
qint64 processPID = -1; qint64 processPID = -1;
chrono::high_resolution_clock::time_point start = chrono::high_resolution_clock::now(); chrono::high_resolution_clock::time_point start = chrono::high_resolution_clock::now();
do { do {
QThread::msleep(200); QThread::msleep(200);
FilePath adbPath = AndroidConfigurations::currentConfig().adbToolPath(); const auto out = SynchronousProcess().runBlocking({adbPath, args}).allRawOutput();
selector.append("shell");
selector.append(preNougat ? pidScriptPreNougat : pidScript.arg(packageName));
const auto out = SynchronousProcess().runBlocking({adbPath, selector}).allRawOutput();
if (preNougat) { if (preNougat) {
processPID = extractPID(out, packageName); processPID = extractPID(out, packageName);
} else { } else {
if (!out.isEmpty()) if (!out.isEmpty())
processPID = out.trimmed().toLongLong(); processPID = out.trimmed().toLongLong();
} }
} while (processPID == -1 && !isTimedOut(start) && !fi.isCanceled()); } while ((processPID == -1 || processPID == 0) && !isTimedOut(start) && !fi.isCanceled());
qCDebug(androidRunWorkerLog) << "PID found:" << processPID << ", PreNougat:" << preNougat; qCDebug(androidRunWorkerLog) << "PID found:" << processPID << ", PreNougat:" << preNougat;
if (!fi.isCanceled()) if (!fi.isCanceled())