Android: Remove m_deviceSerialNumber and m_apiLevel from Runnable

It's nothing that can be chosen freely, rather a feature of
the current setup/device.

Change-Id: I39460e22dab56adcce9da44f61a895923fb8c2a0
Reviewed-by: Vikas Pachdha <vikas.pachdha@qt.io>
This commit is contained in:
hjk
2018-05-07 17:13:52 +02:00
parent cf94c35f68
commit ba01d8729e
5 changed files with 22 additions and 30 deletions

View File

@@ -39,10 +39,8 @@ struct ANDROID_EXPORT AndroidRunnable
Utils::Environment environment; Utils::Environment environment;
QStringList beforeStartAdbCommands; QStringList beforeStartAdbCommands;
QStringList afterFinishAdbCommands; QStringList afterFinishAdbCommands;
QString deviceSerialNumber;
QString extraAppParams; QString extraAppParams;
Utils::Environment extraEnvVars; Utils::Environment extraEnvVars;
int apiLevel = -1;
QString displayName() const { return packageName; } QString displayName() const { return packageName; }
static void *staticTypeId; static void *staticTypeId;
@@ -55,8 +53,7 @@ inline bool operator==(const AndroidRunnable &r1, const AndroidRunnable &r2)
&& r1.amStartExtraArgs == r2.amStartExtraArgs && r1.amStartExtraArgs == r2.amStartExtraArgs
&& r1.environment == r2.environment && r1.environment == r2.environment
&& r1.beforeStartAdbCommands == r2.beforeStartAdbCommands && r1.beforeStartAdbCommands == r2.beforeStartAdbCommands
&& r1.afterFinishAdbCommands == r2.afterFinishAdbCommands && r1.afterFinishAdbCommands == r2.afterFinishAdbCommands;
&& r1.deviceSerialNumber == r2.deviceSerialNumber;
} }
inline bool operator!=(const AndroidRunnable &r1, const AndroidRunnable &r2) inline bool operator!=(const AndroidRunnable &r1, const AndroidRunnable &r2)

View File

@@ -134,8 +134,6 @@ AndroidRunner::AndroidRunner(RunControl *runControl,
m_androidRunnable.extraAppParams = extraAppParams; m_androidRunnable.extraAppParams = extraAppParams;
m_androidRunnable.extraEnvVars = extraEnvVars; m_androidRunnable.extraEnvVars = extraEnvVars;
m_androidRunnable.deviceSerialNumber = AndroidManager::deviceSerialNumber(m_target);
m_androidRunnable.apiLevel = AndroidManager::deviceApiLevel(m_target);
RunConfiguration *rc = runControl->runConfiguration(); RunConfiguration *rc = runControl->runConfiguration();
if (auto aspect = rc->extraAspect(Constants::ANDROID_AMSTARTARGS_ASPECT)) if (auto aspect = rc->extraAspect(Constants::ANDROID_AMSTARTARGS_ASPECT))
@@ -151,7 +149,8 @@ AndroidRunner::AndroidRunner(RunControl *runControl,
m_androidRunnable.afterFinishAdbCommands.append(QString("shell %1").arg(shellCmd)); m_androidRunnable.afterFinishAdbCommands.append(QString("shell %1").arg(shellCmd));
} }
if (m_androidRunnable.apiLevel > 23) const int apiLevel = AndroidManager::deviceApiLevel(m_target);
if (apiLevel > 23)
m_worker.reset(new AndroidRunnerWorker(runControl, m_androidRunnable)); m_worker.reset(new AndroidRunnerWorker(runControl, m_androidRunnable));
else else
m_worker.reset(new AndroidRunnerWorkerPreNougat(runControl, m_androidRunnable)); m_worker.reset(new AndroidRunnerWorkerPreNougat(runControl, m_androidRunnable));
@@ -159,9 +158,8 @@ AndroidRunner::AndroidRunner(RunControl *runControl,
connect(this, &AndroidRunner::asyncStart, m_worker.data(), &AndroidRunnerWorkerBase::asyncStart); connect(this, &AndroidRunner::asyncStart, m_worker.data(), &AndroidRunnerWorkerBase::asyncStart);
connect(this, &AndroidRunner::asyncStop, m_worker.data(), &AndroidRunnerWorkerBase::asyncStop); connect(this, &AndroidRunner::asyncStop, m_worker.data(), &AndroidRunnerWorkerBase::asyncStop);
connect(this, &AndroidRunner::androidRunnableChanged, connect(this, &AndroidRunner::androidDeviceInfoChanged,
m_worker.data(), &AndroidRunnerWorkerBase::setAndroidRunnable); m_worker.data(), &AndroidRunnerWorkerBase::setAndroidDeviceInfo);
connect(m_worker.data(), &AndroidRunnerWorkerBase::remoteProcessStarted, connect(m_worker.data(), &AndroidRunnerWorkerBase::remoteProcessStarted,
this, &AndroidRunner::handleRemoteProcessStarted); this, &AndroidRunner::handleRemoteProcessStarted);
connect(m_worker.data(), &AndroidRunnerWorkerBase::remoteProcessFinished, connect(m_worker.data(), &AndroidRunnerWorkerBase::remoteProcessFinished,
@@ -251,14 +249,6 @@ void AndroidRunner::handleRemoteProcessFinished(const QString &errString)
reportStopped(); reportStopped();
} }
void AndroidRunner::setRunnable(const AndroidRunnable &runnable)
{
if (runnable != m_androidRunnable) {
m_androidRunnable = runnable;
emit androidRunnableChanged(m_androidRunnable);
}
}
void AndroidRunner::launchAVD() void AndroidRunner::launchAVD()
{ {
if (!m_target || !m_target->project()) if (!m_target || !m_target->project())
@@ -271,9 +261,7 @@ void AndroidRunner::launchAVD()
AndroidDeviceInfo info = AndroidConfigurations::showDeviceDialog( AndroidDeviceInfo info = AndroidConfigurations::showDeviceDialog(
m_target->project(), deviceAPILevel, targetArch); m_target->project(), deviceAPILevel, targetArch);
AndroidManager::setDeviceSerialNumber(m_target, info.serialNumber); AndroidManager::setDeviceSerialNumber(m_target, info.serialNumber);
m_androidRunnable.deviceSerialNumber = info.serialNumber; emit androidDeviceInfoChanged(info);
m_androidRunnable.apiLevel = info.sdk;
emit androidRunnableChanged(m_androidRunnable);
if (info.isValid()) { if (info.isValid()) {
AndroidAvdManager avdManager; AndroidAvdManager avdManager;
if (avdManager.findAvd(info.avdname).isEmpty()) { if (avdManager.findAvd(info.avdname).isEmpty()) {

View File

@@ -56,9 +56,6 @@ public:
const Utils::Environment &extraEnvVars = Utils::Environment()); const Utils::Environment &extraEnvVars = Utils::Environment());
~AndroidRunner() override; ~AndroidRunner() override;
void setRunnable(const AndroidRunnable &runnable);
const AndroidRunnable &runnable() const { return m_androidRunnable; }
Utils::Port gdbServerPort() const { return m_gdbServerPort; } Utils::Port gdbServerPort() const { return m_gdbServerPort; }
QUrl qmlServer() const { return m_qmlServer; } QUrl qmlServer() const { return m_qmlServer; }
Utils::ProcessHandle pid() const { return m_pid; } Utils::ProcessHandle pid() const { return m_pid; }
@@ -70,7 +67,7 @@ signals:
void asyncStart(); void asyncStart();
void asyncStop(); void asyncStop();
void qmlServerReady(const QUrl &serverUrl); void qmlServerReady(const QUrl &serverUrl);
void androidRunnableChanged(const AndroidRunnable &runnable); void androidDeviceInfoChanged(const AndroidDeviceInfo &deviceInfo);
void avdDetected(); void avdDetected();
private: private:

View File

@@ -24,6 +24,7 @@
****************************************************************************/ ****************************************************************************/
#include "androidconfigurations.h" #include "androidconfigurations.h"
#include "androidmanager.h"
#include "androidrunnerworker.h" #include "androidrunnerworker.h"
#include <QThread> #include <QThread>
@@ -185,6 +186,10 @@ AndroidRunnerWorkerBase::AndroidRunnerWorkerBase(RunControl *runControl, const A
m_adb = AndroidConfigurations::currentConfig().adbToolPath().toString(); m_adb = AndroidConfigurations::currentConfig().adbToolPath().toString();
m_localJdbServerPort = Utils::Port(5038); m_localJdbServerPort = Utils::Port(5038);
QTC_CHECK(m_localJdbServerPort.isValid()); QTC_CHECK(m_localJdbServerPort.isValid());
auto target = runConfig->target();
m_deviceSerialNumber = AndroidManager::deviceSerialNumber(target);
m_apiLevel = AndroidManager::deviceApiLevel(target);
} }
AndroidRunnerWorkerBase::~AndroidRunnerWorkerBase() AndroidRunnerWorkerBase::~AndroidRunnerWorkerBase()
@@ -234,10 +239,9 @@ void AndroidRunnerWorkerBase::adbKill(qint64 pid)
runAdb({"shell", "run-as", m_androidRunnable.packageName, "kill", "-9", QString::number(pid)}); runAdb({"shell", "run-as", m_androidRunnable.packageName, "kill", "-9", QString::number(pid)});
} }
QStringList AndroidRunnerWorkerBase::selector() const QStringList AndroidRunnerWorkerBase::selector() const
{ {
return AndroidDeviceInfo::adbSelector(m_androidRunnable.deviceSerialNumber); return AndroidDeviceInfo::adbSelector(m_deviceSerialNumber);
} }
void AndroidRunnerWorkerBase::forceStop() void AndroidRunnerWorkerBase::forceStop()
@@ -328,9 +332,10 @@ void AndroidRunnerWorkerBase::logcatProcess(const QByteArray &text, QByteArray &
} }
} }
void AndroidRunnerWorkerBase::setAndroidRunnable(const AndroidRunnable &runnable) void AndroidRunnerWorkerBase::setAndroidDeviceInfo(const AndroidDeviceInfo &info)
{ {
m_androidRunnable = runnable; m_deviceSerialNumber = info.serialNumber;
m_apiLevel = info.sdk;
} }
void AndroidRunnerWorkerBase::asyncStart() void AndroidRunnerWorkerBase::asyncStart()

View File

@@ -38,6 +38,9 @@ class RunControl;
} }
namespace Android { namespace Android {
class AndroidDeviceInfo;
namespace Internal { namespace Internal {
const int MIN_SOCKET_HANDSHAKE_PORT = 20001; const int MIN_SOCKET_HANDSHAKE_PORT = 20001;
@@ -56,7 +59,7 @@ public:
void logcatReadStandardError(); void logcatReadStandardError();
void logcatReadStandardOutput(); void logcatReadStandardOutput();
void logcatProcess(const QByteArray &text, QByteArray &buffer, bool onlyError); void logcatProcess(const QByteArray &text, QByteArray &buffer, bool onlyError);
void setAndroidRunnable(const AndroidRunnable &runnable); void setAndroidDeviceInfo(const AndroidDeviceInfo &info);
virtual void asyncStart(); virtual void asyncStart();
virtual void asyncStop(); virtual void asyncStop();
@@ -99,6 +102,8 @@ protected:
Utils::Port m_localJdbServerPort; Utils::Port m_localJdbServerPort;
std::unique_ptr<QProcess, Deleter> m_gdbServerProcess; std::unique_ptr<QProcess, Deleter> m_gdbServerProcess;
std::unique_ptr<QProcess, Deleter> m_jdbProcess; std::unique_ptr<QProcess, Deleter> m_jdbProcess;
QString m_deviceSerialNumber;
int m_apiLevel = -1;
}; };