diff --git a/src/libs/utils/qtcprocess.cpp b/src/libs/utils/qtcprocess.cpp index 350e92ccfd9..dce239b4889 100644 --- a/src/libs/utils/qtcprocess.cpp +++ b/src/libs/utils/qtcprocess.cpp @@ -1536,4 +1536,9 @@ void CommandLine::addArgs(const QString &inArgs) QtcProcess::addArgs(&m_arguments, inArgs); } +QString CommandLine::toUserOutput() const +{ + return m_executable.toUserOutput() + ' ' + m_arguments; +} + } // namespace Utils diff --git a/src/libs/utils/qtcprocess.h b/src/libs/utils/qtcprocess.h index c0544d42c94..1a831d3a5a7 100644 --- a/src/libs/utils/qtcprocess.h +++ b/src/libs/utils/qtcprocess.h @@ -45,6 +45,8 @@ public: void addArgs(const QStringList &inArgs); void addArgs(const QString &inArgs); + QString toUserOutput() const; + FilePath executable() const { return m_executable; } QString arguments() const { return m_arguments; } diff --git a/src/plugins/android/androiddeployqtstep.cpp b/src/plugins/android/androiddeployqtstep.cpp index 94a016478c2..8e56cd6a582 100644 --- a/src/plugins/android/androiddeployqtstep.cpp +++ b/src/plugins/android/androiddeployqtstep.cpp @@ -63,8 +63,10 @@ #include using namespace ProjectExplorer; -using namespace Android; -using namespace Android::Internal; +using namespace Utils; + +namespace Android { +namespace Internal { namespace { Q_LOGGING_CATEGORY(deployStepLog, "qtc.android.build.androiddeployqtstep", QtWarningMsg) @@ -169,7 +171,7 @@ Core::Id AndroidDeployQtStep::stepId() bool AndroidDeployQtStep::init() { - m_androiddeployqtArgs.clear(); + m_androiddeployqtArgs = CommandLine(); m_targetArch = AndroidManager::targetArch(target()); if (m_targetArch.isEmpty()) { @@ -256,31 +258,24 @@ bool AndroidDeployQtStep::init() m_workingDirectory = bc->buildDirectory().pathAppended(Constants::ANDROID_BUILDDIRECTORY).toString(); - Utils::QtcProcess::addArg(&m_androiddeployqtArgs, QLatin1String("--verbose")); - Utils::QtcProcess::addArg(&m_androiddeployqtArgs, QLatin1String("--output")); - Utils::QtcProcess::addArg(&m_androiddeployqtArgs, m_workingDirectory); - Utils::QtcProcess::addArg(&m_androiddeployqtArgs, QLatin1String("--no-build")); - Utils::QtcProcess::addArg(&m_androiddeployqtArgs, QLatin1String("--input")); + m_androiddeployqtArgs.addArgs({"--verbose", + "--output", m_workingDirectory, + "--no-build", + "--input", jsonFile}); - - - Utils::QtcProcess::addArg(&m_androiddeployqtArgs, jsonFile); if (androidBuildApkStep && androidBuildApkStep->useMinistro()) { qCDebug(deployStepLog) << "Using ministro"; - Utils::QtcProcess::addArg(&m_androiddeployqtArgs, QLatin1String("--deployment")); - Utils::QtcProcess::addArg(&m_androiddeployqtArgs, QLatin1String("ministro")); + m_androiddeployqtArgs.addArgs({"--deployment", "ministro"}); } - Utils::QtcProcess::addArg(&m_androiddeployqtArgs, QLatin1String("--gradle")); + m_androiddeployqtArgs.addArg("--gradle"); if (androidBuildApkStep && androidBuildApkStep->signPackage()) { // The androiddeployqt tool is not really written to do stand-alone installations. // This hack forces it to use the correct filename for the apk file when installing // as a temporary fix until androiddeployqt gets the support. Since the --sign is // only used to get the correct file name of the apk, its parameters are ignored. - Utils::QtcProcess::addArg(&m_androiddeployqtArgs, QLatin1String("--sign")); - Utils::QtcProcess::addArg(&m_androiddeployqtArgs, QLatin1String("foo")); - Utils::QtcProcess::addArg(&m_androiddeployqtArgs, QLatin1String("bar")); + m_androiddeployqtArgs.addArgs({"--sign", "foo", "bar"}); } } } else { @@ -303,18 +298,17 @@ bool AndroidDeployQtStep::init() AndroidDeployQtStep::DeployErrorCode AndroidDeployQtStep::runDeploy() { - QString args; + CommandLine cmd(Utils::FilePath::fromString(m_command), {}); if (m_useAndroiddeployqt && m_apkPath.isEmpty()) { - args = m_androiddeployqtArgs; + cmd = m_androiddeployqtArgs; if (m_uninstallPreviousPackageRun) - Utils::QtcProcess::addArg(&args, QLatin1String("--install")); + cmd.addArg("--install"); else - Utils::QtcProcess::addArg(&args, QLatin1String("--reinstall")); + cmd.addArg("--reinstall"); + + if (!m_serialNumber.isEmpty() && !m_serialNumber.startsWith("????")) + cmd.addArgs({"--device", m_serialNumber}); - if (!m_serialNumber.isEmpty() && !m_serialNumber.startsWith(QLatin1String("????"))) { - Utils::QtcProcess::addArg(&args, QLatin1String("--device")); - Utils::QtcProcess::addArg(&args, m_serialNumber); - } } else { RunConfiguration *rc = target()->activeRunConfiguration(); QTC_ASSERT(rc, return DeployErrorCode::Failure); @@ -357,16 +351,12 @@ AndroidDeployQtStep::DeployErrorCode AndroidDeployQtStep::runDeploy() << QLatin1String("uninstall") << packageName); } - foreach (const QString &arg, AndroidDeviceInfo::adbSelector(m_serialNumber)) - Utils::QtcProcess::addArg(&args, arg); - - Utils::QtcProcess::addArg(&args, QLatin1String("install")); - Utils::QtcProcess::addArg(&args, QLatin1String("-r")); - Utils::QtcProcess::addArg(&args, m_apkPath.toString()); + cmd.addArgs(AndroidDeviceInfo::adbSelector(m_serialNumber)); + cmd.addArgs({"install", "-r", m_apkPath.toString()}); } m_process = new Utils::QtcProcess; - m_process->setCommand(Utils::CommandLine(Utils::FilePath::fromString(m_command), args)); + m_process->setCommand(cmd); m_process->setWorkingDirectory(m_workingDirectory); m_process->setEnvironment(m_environment); @@ -381,8 +371,7 @@ AndroidDeployQtStep::DeployErrorCode AndroidDeployQtStep::runDeploy() m_process->start(); - emit addOutput(tr("Starting: \"%1\" %2") - .arg(QDir::toNativeSeparators(m_command), args), + emit addOutput(tr("Starting: \"%1\"").arg(cmd.toUserOutput()), BuildStep::OutputFormat::NormalMessage); while (!m_process->waitForFinished(200)) { @@ -641,3 +630,6 @@ AndroidDeployQtStep::UninstallType AndroidDeployQtStep::uninstallPreviousPackage return ForceUnintall; return m_uninstallPreviousPackage ? Uninstall : Keep; } + +} // Internal +} // Android diff --git a/src/plugins/android/androiddeployqtstep.h b/src/plugins/android/androiddeployqtstep.h index 949992d0e34..da2a96e2a0b 100644 --- a/src/plugins/android/androiddeployqtstep.h +++ b/src/plugins/android/androiddeployqtstep.h @@ -33,8 +33,7 @@ #include #include - -namespace Utils { class QtcProcess; } +#include namespace Android { namespace Internal { @@ -118,7 +117,7 @@ private: bool m_useAndroiddeployqt = false; bool m_askForUninstall = false; static const Core::Id Id; - QString m_androiddeployqtArgs; + Utils::CommandLine m_androiddeployqtArgs; QString m_adbPath; QString m_command; QString m_workingDirectory;