forked from qt-creator/qt-creator
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:
@@ -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);
|
||||
|
||||
|
@@ -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);
|
||||
|
@@ -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;
|
||||
|
Reference in New Issue
Block a user