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;
QStringList beforeStartAdbCommands;
QStringList afterFinishAdbCommands;
QString deviceSerialNumber;
QString extraAppParams;
Utils::Environment extraEnvVars;
int apiLevel = -1;
QString displayName() const { return packageName; }
static void *staticTypeId;
@@ -55,8 +53,7 @@ inline bool operator==(const AndroidRunnable &r1, const AndroidRunnable &r2)
&& r1.amStartExtraArgs == r2.amStartExtraArgs
&& r1.environment == r2.environment
&& r1.beforeStartAdbCommands == r2.beforeStartAdbCommands
&& r1.afterFinishAdbCommands == r2.afterFinishAdbCommands
&& r1.deviceSerialNumber == r2.deviceSerialNumber;
&& r1.afterFinishAdbCommands == r2.afterFinishAdbCommands;
}
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.extraEnvVars = extraEnvVars;
m_androidRunnable.deviceSerialNumber = AndroidManager::deviceSerialNumber(m_target);
m_androidRunnable.apiLevel = AndroidManager::deviceApiLevel(m_target);
RunConfiguration *rc = runControl->runConfiguration();
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));
}
if (m_androidRunnable.apiLevel > 23)
const int apiLevel = AndroidManager::deviceApiLevel(m_target);
if (apiLevel > 23)
m_worker.reset(new AndroidRunnerWorker(runControl, m_androidRunnable));
else
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::asyncStop, m_worker.data(), &AndroidRunnerWorkerBase::asyncStop);
connect(this, &AndroidRunner::androidRunnableChanged,
m_worker.data(), &AndroidRunnerWorkerBase::setAndroidRunnable);
connect(this, &AndroidRunner::androidDeviceInfoChanged,
m_worker.data(), &AndroidRunnerWorkerBase::setAndroidDeviceInfo);
connect(m_worker.data(), &AndroidRunnerWorkerBase::remoteProcessStarted,
this, &AndroidRunner::handleRemoteProcessStarted);
connect(m_worker.data(), &AndroidRunnerWorkerBase::remoteProcessFinished,
@@ -251,14 +249,6 @@ void AndroidRunner::handleRemoteProcessFinished(const QString &errString)
reportStopped();
}
void AndroidRunner::setRunnable(const AndroidRunnable &runnable)
{
if (runnable != m_androidRunnable) {
m_androidRunnable = runnable;
emit androidRunnableChanged(m_androidRunnable);
}
}
void AndroidRunner::launchAVD()
{
if (!m_target || !m_target->project())
@@ -271,9 +261,7 @@ void AndroidRunner::launchAVD()
AndroidDeviceInfo info = AndroidConfigurations::showDeviceDialog(
m_target->project(), deviceAPILevel, targetArch);
AndroidManager::setDeviceSerialNumber(m_target, info.serialNumber);
m_androidRunnable.deviceSerialNumber = info.serialNumber;
m_androidRunnable.apiLevel = info.sdk;
emit androidRunnableChanged(m_androidRunnable);
emit androidDeviceInfoChanged(info);
if (info.isValid()) {
AndroidAvdManager avdManager;
if (avdManager.findAvd(info.avdname).isEmpty()) {

View File

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

View File

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

View File

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