Android: Detect preNougat inside AndroidRunnerWorker

Remove setIsPreNougat() setter.
Remove m_isPreNougat field and provide isPreNougat() getter
instead.

Change-Id: Ie906024840be78a0b17fbd3d4df00667b4812cfb
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
Jarek Kobus
2024-07-18 15:57:46 +02:00
parent 2b1001eb24
commit 715240257d
3 changed files with 4 additions and 8 deletions

View File

@@ -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);

View File

@@ -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<EnvironmentAspect>()->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);

View File

@@ -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;