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('/'));
|
m_packageName = intent.left(intent.indexOf('/'));
|
||||||
qCDebug(androidRunnerLog) << "Intent name:" << intent << "Package name" << m_packageName;
|
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.reset(new AndroidRunnerWorker(this, m_packageName));
|
||||||
m_worker->setIntentName(intent);
|
m_worker->setIntentName(intent);
|
||||||
m_worker->setIsPreNougat(apiLevel <= 23);
|
|
||||||
|
|
||||||
m_worker->moveToThread(&m_thread);
|
m_worker->moveToThread(&m_thread);
|
||||||
|
|
||||||
|
@@ -162,6 +162,7 @@ AndroidRunnerWorker::AndroidRunnerWorker(RunWorker *runner, const QString &packa
|
|||||||
auto target = runControl->target();
|
auto target = runControl->target();
|
||||||
m_deviceSerialNumber = AndroidManager::deviceSerialNumber(target);
|
m_deviceSerialNumber = AndroidManager::deviceSerialNumber(target);
|
||||||
m_apiLevel = AndroidManager::deviceApiLevel(target);
|
m_apiLevel = AndroidManager::deviceApiLevel(target);
|
||||||
|
qCDebug(androidRunWorkerLog) << "Device API:" << m_apiLevel;
|
||||||
|
|
||||||
m_extraEnvVars = runControl->aspectData<EnvironmentAspect>()->environment;
|
m_extraEnvVars = runControl->aspectData<EnvironmentAspect>()->environment;
|
||||||
qCDebug(androidRunWorkerLog).noquote() << "Environment variables for the app"
|
qCDebug(androidRunWorkerLog).noquote() << "Environment variables for the app"
|
||||||
@@ -631,7 +632,7 @@ void AndroidRunnerWorker::asyncStart()
|
|||||||
|
|
||||||
const FilePath adbPath = AndroidConfig::adbToolPath();
|
const FilePath adbPath = AndroidConfig::adbToolPath();
|
||||||
const QStringList args = selector();
|
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("for p in /proc/[0-9]*; do cat <$p/cmdline && echo :${p##*/}; done")
|
||||||
: QString("pidof -s '%1'").arg(m_packageName);
|
: QString("pidof -s '%1'").arg(m_packageName);
|
||||||
|
|
||||||
@@ -639,7 +640,7 @@ void AndroidRunnerWorker::asyncStart()
|
|||||||
process.setCommand({adbPath, {args, "shell", pidScript}});
|
process.setCommand({adbPath, {args, "shell", pidScript}});
|
||||||
};
|
};
|
||||||
const auto onPidDone = [pidStorage, packageName = m_packageName,
|
const auto onPidDone = [pidStorage, packageName = m_packageName,
|
||||||
isPreNougat = m_isPreNougat](const Process &process) {
|
isPreNougat = isPreNougat()](const Process &process) {
|
||||||
const QString out = process.allOutput();
|
const QString out = process.allOutput();
|
||||||
if (isPreNougat)
|
if (isPreNougat)
|
||||||
pidStorage->first = extractPID(out, packageName);
|
pidStorage->first = extractPID(out, packageName);
|
||||||
|
@@ -37,7 +37,6 @@ public:
|
|||||||
void setAndroidDeviceInfo(const AndroidDeviceInfo &info);
|
void setAndroidDeviceInfo(const AndroidDeviceInfo &info);
|
||||||
void asyncStart();
|
void asyncStart();
|
||||||
void asyncStop();
|
void asyncStop();
|
||||||
void setIsPreNougat(bool isPreNougat) { m_isPreNougat = isPreNougat; }
|
|
||||||
void setIntentName(const QString &intentName) { m_intentName = intentName; }
|
void setIntentName(const QString &intentName) { m_intentName = intentName; }
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
@@ -75,9 +74,9 @@ private:
|
|||||||
Settled
|
Settled
|
||||||
};
|
};
|
||||||
void onProcessIdChanged(const PidUserPair &pidUser);
|
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
|
// Create the processes and timer in the worker thread, for correct thread affinity
|
||||||
bool m_isPreNougat = false;
|
|
||||||
QString m_packageName;
|
QString m_packageName;
|
||||||
QString m_intentName;
|
QString m_intentName;
|
||||||
QStringList m_beforeStartAdbCommands;
|
QStringList m_beforeStartAdbCommands;
|
||||||
|
Reference in New Issue
Block a user