forked from qt-creator/qt-creator
Android: Support commandline arguments for Android app
Change-Id: I3910b68ebbf00e1b62da663a3e58224413a1929e Reviewed-by: BogDan Vatra <bogdan@kdab.com> Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -100,12 +100,11 @@ static QString toNdkArch(const QString &arch)
|
||||
}
|
||||
|
||||
AndroidDebugSupport::AndroidDebugSupport(RunControl *runControl, const QString &intentName,
|
||||
const QString &extraAppParams,
|
||||
const Utils::Environment &extraEnvVars)
|
||||
: Debugger::DebuggerRunTool(runControl)
|
||||
{
|
||||
setDisplayName("AndroidDebugger");
|
||||
m_runner = new AndroidRunner(runControl, intentName, extraAppParams, extraEnvVars);
|
||||
m_runner = new AndroidRunner(runControl, intentName, extraEnvVars);
|
||||
addStartDependency(m_runner);
|
||||
}
|
||||
|
||||
|
@@ -38,7 +38,6 @@ class AndroidDebugSupport : public Debugger::DebuggerRunTool
|
||||
public:
|
||||
AndroidDebugSupport(ProjectExplorer::RunControl *runControl,
|
||||
const QString &intentName = QString(),
|
||||
const QString &extraAppParams = QString(),
|
||||
const Utils::Environment &extraEnvVars = Utils::Environment());
|
||||
|
||||
void start() override;
|
||||
|
@@ -107,7 +107,7 @@ bool AndroidPlugin::initialize(const QStringList &arguments, QString *errorMessa
|
||||
|
||||
RunControl::registerWorker(QML_PREVIEW_RUN_MODE, [](RunControl *runControl) -> RunWorker* {
|
||||
const Runnable runnable = runControl->runConfiguration()->runnable();
|
||||
return new AndroidQmlToolingSupport(runControl, runnable.executable, runnable.commandLineArguments);
|
||||
return new AndroidQmlToolingSupport(runControl, runnable.executable);
|
||||
}, [](RunConfiguration *runConfig) {
|
||||
return runConfig->isEnabled()
|
||||
&& runConfig->id().name().startsWith("QmlProjectManager.QmlRunConfiguration")
|
||||
|
@@ -31,14 +31,14 @@ using namespace ProjectExplorer;
|
||||
namespace Android {
|
||||
namespace Internal {
|
||||
|
||||
AndroidQmlToolingSupport::AndroidQmlToolingSupport(
|
||||
RunControl *runControl, const QString &intentName, const QString &extraAppParams,
|
||||
const Utils::Environment &extraEnvVars)
|
||||
AndroidQmlToolingSupport::AndroidQmlToolingSupport(RunControl *runControl,
|
||||
const QString &intentName,
|
||||
const Utils::Environment &extraEnvVars)
|
||||
: RunWorker(runControl)
|
||||
{
|
||||
setDisplayName("AndroidQmlToolingSupport");
|
||||
|
||||
auto runner = new AndroidRunner(runControl, intentName, extraAppParams, extraEnvVars);
|
||||
auto runner = new AndroidRunner(runControl, intentName, extraEnvVars);
|
||||
addStartDependency(runner);
|
||||
|
||||
auto profiler = runControl->createWorker(runControl->runMode());
|
||||
|
@@ -38,7 +38,6 @@ class AndroidQmlToolingSupport : public ProjectExplorer::RunWorker
|
||||
public:
|
||||
explicit AndroidQmlToolingSupport(
|
||||
ProjectExplorer::RunControl *runControl, const QString &intentName = QString(),
|
||||
const QString &extraAppParams = QString(),
|
||||
const Utils::Environment &extraEnvVars = Utils::Environment());
|
||||
|
||||
private:
|
||||
|
@@ -110,6 +110,8 @@ void BaseStringListAspect::setLabel(const QString &label)
|
||||
AndroidRunConfiguration::AndroidRunConfiguration(Target *target, Core::Id id)
|
||||
: RunConfiguration(target, id)
|
||||
{
|
||||
addExtraAspect(new ArgumentsAspect(this));
|
||||
|
||||
auto amStartArgsAspect = new BaseStringAspect(this);
|
||||
amStartArgsAspect->setId(Constants::ANDROID_AMSTARTARGS);
|
||||
amStartArgsAspect->setSettingsKey("Android.AmStartArgsKey");
|
||||
@@ -141,6 +143,7 @@ QWidget *AndroidRunConfiguration::createConfigurationWidget()
|
||||
auto widget = new QWidget;
|
||||
auto layout = new QFormLayout(widget);
|
||||
|
||||
extraAspect<ArgumentsAspect>()->addToConfigurationLayout(layout);
|
||||
extraAspect(Constants::ANDROID_AMSTARTARGS)->addToConfigurationLayout(layout);
|
||||
|
||||
auto warningIconLabel = new QLabel;
|
||||
|
@@ -39,9 +39,8 @@ namespace Android {
|
||||
namespace Internal {
|
||||
|
||||
AndroidRunSupport::AndroidRunSupport(RunControl *runControl, const QString &intentName,
|
||||
const QString &extraAppParams,
|
||||
const Utils::Environment &extraEnvVars)
|
||||
: AndroidRunner(runControl, intentName, extraAppParams, extraEnvVars)
|
||||
: AndroidRunner(runControl, intentName, extraEnvVars)
|
||||
{
|
||||
runControl->setIcon(Utils::Icons::RUN_SMALL_TOOLBAR);
|
||||
}
|
||||
|
@@ -41,7 +41,6 @@ class AndroidRunSupport : public AndroidRunner
|
||||
public:
|
||||
explicit AndroidRunSupport(ProjectExplorer::RunControl *runControl,
|
||||
const QString &intentName = QString(),
|
||||
const QString &extraAppParams = QString(),
|
||||
const Utils::Environment &extraEnvVars = Utils::Environment());
|
||||
~AndroidRunSupport() override;
|
||||
|
||||
|
@@ -120,7 +120,6 @@ namespace Internal {
|
||||
|
||||
AndroidRunner::AndroidRunner(RunControl *runControl,
|
||||
const QString &intentName,
|
||||
const QString &extraAppParams,
|
||||
const Utils::Environment &extraEnvVars)
|
||||
: RunWorker(runControl), m_target(runControl->runConfiguration()->target())
|
||||
{
|
||||
@@ -145,7 +144,6 @@ AndroidRunner::AndroidRunner(RunControl *runControl,
|
||||
m_worker.reset(new AndroidRunnerWorker(this, m_packageName));
|
||||
m_worker->setIntentName(intent);
|
||||
m_worker->setIsPreNougat(apiLevel <= 23);
|
||||
m_worker->setExtraAppParams(extraAppParams);
|
||||
m_worker->setExtraEnvVars(extraEnvVars);
|
||||
|
||||
m_worker->moveToThread(&m_thread);
|
||||
|
@@ -51,7 +51,6 @@ class AndroidRunner : public ProjectExplorer::RunWorker
|
||||
public:
|
||||
explicit AndroidRunner(ProjectExplorer::RunControl *runControl,
|
||||
const QString &intentName = QString(),
|
||||
const QString &extraAppParams = QString(),
|
||||
const Utils::Environment &extraEnvVars = Utils::Environment());
|
||||
~AndroidRunner() override;
|
||||
|
||||
|
@@ -31,6 +31,7 @@
|
||||
#include "androidrunconfiguration.h"
|
||||
|
||||
#include <debugger/debuggerrunconfigurationaspect.h>
|
||||
#include <projectexplorer/runconfigurationaspects.h>
|
||||
#include <projectexplorer/target.h>
|
||||
#include <qtsupport/baseqtversion.h>
|
||||
#include <qtsupport/qtkitinformation.h>
|
||||
@@ -38,6 +39,7 @@
|
||||
#include <utils/runextensions.h>
|
||||
#include <utils/synchronousprocess.h>
|
||||
#include <utils/temporaryfile.h>
|
||||
#include <utils/qtcprocess.h>
|
||||
#include <utils/url.h>
|
||||
|
||||
#include <QLoggingCategory>
|
||||
@@ -191,6 +193,8 @@ AndroidRunnerWorker::AndroidRunnerWorker(RunWorker *runner, const QString &packa
|
||||
m_deviceSerialNumber = AndroidManager::deviceSerialNumber(target);
|
||||
m_apiLevel = AndroidManager::deviceApiLevel(target);
|
||||
|
||||
m_extraAppParams = runConfig->runnable().commandLineArguments;
|
||||
|
||||
if (auto aspect = runConfig->extraAspect(Constants::ANDROID_AMSTARTARGS))
|
||||
m_amStartExtraArgs = static_cast<BaseStringAspect *>(aspect)->value().split(' ');
|
||||
|
||||
@@ -456,9 +460,13 @@ void AndroidRunnerWorker::asyncStartHelper()
|
||||
.arg(m_qmlServer.port()).arg(QmlDebug::qmlDebugServices(m_qmlDebugServices));
|
||||
}
|
||||
|
||||
|
||||
if (!m_extraAppParams.isEmpty()) {
|
||||
QStringList appArgs =
|
||||
Utils::QtcProcess::splitArgs(m_extraAppParams, Utils::OsType::OsTypeLinux);
|
||||
qCDebug(androidRunWorkerLog) << "Using application arguments: " << appArgs;
|
||||
args << "-e" << "extraappparams"
|
||||
<< QString::fromLatin1(m_extraAppParams.toUtf8().toBase64());
|
||||
<< QString::fromLatin1(appArgs.join(' ').toUtf8().toBase64());
|
||||
}
|
||||
|
||||
if (m_extraEnvVars.size() > 0) {
|
||||
@@ -606,11 +614,5 @@ void AndroidRunnerWorker::setExtraEnvVars(const Utils::Environment &extraEnvVars
|
||||
<< extraEnvVars.toStringList();
|
||||
}
|
||||
|
||||
void AndroidRunnerWorker::setExtraAppParams(const QString &extraAppParams)
|
||||
{
|
||||
m_extraAppParams = extraAppParams;
|
||||
}
|
||||
|
||||
|
||||
} // namespace Internal
|
||||
} // namespace Android
|
||||
|
@@ -56,7 +56,6 @@ public:
|
||||
void logcatProcess(const QByteArray &text, QByteArray &buffer, bool onlyError);
|
||||
void setAndroidDeviceInfo(const AndroidDeviceInfo &info);
|
||||
void setExtraEnvVars(const Utils::Environment &extraEnvVars);
|
||||
void setExtraAppParams(const QString &extraAppParams);
|
||||
void setIsPreNougat(bool isPreNougat) { m_isPreNougat = isPreNougat; }
|
||||
void setIntentName(const QString &intentName) { m_intentName = intentName; }
|
||||
|
||||
|
Reference in New Issue
Block a user