diff --git a/src/plugins/android/androidrunner.cpp b/src/plugins/android/androidrunner.cpp index 73a246581fa..b384c46d564 100644 --- a/src/plugins/android/androidrunner.cpp +++ b/src/plugins/android/androidrunner.cpp @@ -46,12 +46,8 @@ AndroidRunner::AndroidRunner(RunControl *runControl, const QString &intentName) m_packageName = intent.left(intent.indexOf('/')); qCDebug(androidRunnerLog) << "Intent name:" << intent << "Package name" << m_packageName; - const int apiLevel = AndroidManager::deviceApiLevel(m_target); - qCDebug(androidRunnerLog) << "Device API:" << apiLevel; - m_worker.reset(new AndroidRunnerWorker(this, m_packageName)); m_worker->setIntentName(intent); - m_worker->setIsPreNougat(apiLevel <= 23); m_worker->moveToThread(&m_thread); diff --git a/src/plugins/android/androidrunnerworker.cpp b/src/plugins/android/androidrunnerworker.cpp index 9befaba742a..59e5e4acd0f 100644 --- a/src/plugins/android/androidrunnerworker.cpp +++ b/src/plugins/android/androidrunnerworker.cpp @@ -162,6 +162,7 @@ AndroidRunnerWorker::AndroidRunnerWorker(RunWorker *runner, const QString &packa auto target = runControl->target(); m_deviceSerialNumber = AndroidManager::deviceSerialNumber(target); m_apiLevel = AndroidManager::deviceApiLevel(target); + qCDebug(androidRunWorkerLog) << "Device API:" << m_apiLevel; m_extraEnvVars = runControl->aspectData()->environment; qCDebug(androidRunWorkerLog).noquote() << "Environment variables for the app" @@ -631,7 +632,7 @@ void AndroidRunnerWorker::asyncStart() const FilePath adbPath = AndroidConfig::adbToolPath(); const QStringList args = selector(); - const QString pidScript = m_isPreNougat + const QString pidScript = isPreNougat() ? QString("for p in /proc/[0-9]*; do cat <$p/cmdline && echo :${p##*/}; done") : QString("pidof -s '%1'").arg(m_packageName); @@ -639,7 +640,7 @@ void AndroidRunnerWorker::asyncStart() process.setCommand({adbPath, {args, "shell", pidScript}}); }; const auto onPidDone = [pidStorage, packageName = m_packageName, - isPreNougat = m_isPreNougat](const Process &process) { + isPreNougat = isPreNougat()](const Process &process) { const QString out = process.allOutput(); if (isPreNougat) pidStorage->first = extractPID(out, packageName); diff --git a/src/plugins/android/androidrunnerworker.h b/src/plugins/android/androidrunnerworker.h index bba8d351041..741b129fa92 100644 --- a/src/plugins/android/androidrunnerworker.h +++ b/src/plugins/android/androidrunnerworker.h @@ -37,7 +37,6 @@ public: void setAndroidDeviceInfo(const AndroidDeviceInfo &info); void asyncStart(); void asyncStop(); - void setIsPreNougat(bool isPreNougat) { m_isPreNougat = isPreNougat; } void setIntentName(const QString &intentName) { m_intentName = intentName; } signals: @@ -75,9 +74,9 @@ private: Settled }; void onProcessIdChanged(const PidUserPair &pidUser); + bool isPreNougat() const { return m_apiLevel > 0 && m_apiLevel <= 23; } // Create the processes and timer in the worker thread, for correct thread affinity - bool m_isPreNougat = false; QString m_packageName; QString m_intentName; QStringList m_beforeStartAdbCommands;