diff options
Diffstat (limited to 'src/plugins/android/androidpackageinstallationstep.cpp')
-rw-r--r-- | src/plugins/android/androidpackageinstallationstep.cpp | 99 |
1 files changed, 63 insertions, 36 deletions
diff --git a/src/plugins/android/androidpackageinstallationstep.cpp b/src/plugins/android/androidpackageinstallationstep.cpp index 9017513974..2d4ba1e338 100644 --- a/src/plugins/android/androidpackageinstallationstep.cpp +++ b/src/plugins/android/androidpackageinstallationstep.cpp @@ -28,13 +28,14 @@ #include "androidconstants.h" #include "androidmanager.h" -#include <projectexplorer/buildsteplist.h> -#include <projectexplorer/target.h> +#include <projectexplorer/abstractprocessstep.h> #include <projectexplorer/buildconfiguration.h> +#include <projectexplorer/buildsteplist.h> #include <projectexplorer/gnumakeparser.h> #include <projectexplorer/kitinformation.h> #include <projectexplorer/processparameters.h> #include <projectexplorer/projectexplorerconstants.h> +#include <projectexplorer/target.h> #include <projectexplorer/toolchain.h> #include <utils/hostosinfo.h> @@ -44,11 +45,44 @@ using namespace ProjectExplorer; using namespace Utils; -using namespace Android::Internal; namespace Android { +namespace Internal { + +class AndroidPackageInstallationStep final : public AbstractProcessStep +{ + Q_DECLARE_TR_FUNCTIONS(Android::AndroidPackageInstallationStep) + +public: + AndroidPackageInstallationStep(BuildStepList *bsl, Utils::Id id); + + BuildStepConfigWidget *createConfigWidget() final; -AndroidPackageInstallationStep::AndroidPackageInstallationStep(BuildStepList *bsl, Core::Id id) + QString nativeAndroidBuildPath() const; + +private: + bool init() final; + void setupOutputFormatter(Utils::OutputFormatter *formatter) override; + void doRun() final; + + QStringList m_androidDirsToClean; +}; + +class AndroidPackageInstallationStepWidget final : public BuildStepConfigWidget +{ + Q_DECLARE_TR_FUNCTIONS(Android::AndroidPackageInstallationStepWidget) + +public: + AndroidPackageInstallationStepWidget(BuildStep *step) + : BuildStepConfigWidget(step) + { + const QString cmd = static_cast<AndroidPackageInstallationStep *>(step) + ->nativeAndroidBuildPath(); + setSummaryText(tr("<b>Make install:</b> Copy App Files to %1").arg(cmd)); + } +}; + +AndroidPackageInstallationStep::AndroidPackageInstallationStep(BuildStepList *bsl, Utils::Id id) : AbstractProcessStep(bsl, id) { const QString name = tr("Copy application data"); @@ -60,35 +94,24 @@ AndroidPackageInstallationStep::AndroidPackageInstallationStep(BuildStepList *bs bool AndroidPackageInstallationStep::init() { - BuildConfiguration *bc = buildConfiguration(); - QString dirPath = bc->buildDirectory().pathAppended(Constants::ANDROID_BUILDDIRECTORY).toString(); - if (HostOsInfo::isWindowsHost()) - if (bc->environment().searchInPath("sh.exe").isEmpty()) - dirPath = QDir::toNativeSeparators(dirPath); - - ToolChain *tc = ToolChainKitAspect::toolChain(target()->kit(), - ProjectExplorer::Constants::CXX_LANGUAGE_ID); + ToolChain *tc = ToolChainKitAspect::cxxToolChain(target()->kit()); QTC_ASSERT(tc, return false); - CommandLine cmd{tc->makeCommand(bc->environment())}; + QString dirPath = nativeAndroidBuildPath(); const QString innerQuoted = QtcProcess::quoteArg(dirPath); const QString outerQuoted = QtcProcess::quoteArg("INSTALL_ROOT=" + innerQuoted); + + CommandLine cmd{tc->makeCommand(buildEnvironment())}; cmd.addArgs(outerQuoted + " install", CommandLine::Raw); ProcessParameters *pp = processParameters(); - pp->setMacroExpander(bc->macroExpander()); - pp->setWorkingDirectory(bc->buildDirectory()); - Environment env = bc->environment(); + pp->setMacroExpander(macroExpander()); + pp->setWorkingDirectory(buildDirectory()); + Environment env = buildEnvironment(); Environment::setupEnglishOutput(&env); pp->setEnvironment(env); pp->setCommandLine(cmd); - setOutputParser(new GnuMakeParser()); - IOutputParser *parser = target()->kit()->createOutputParser(); - if (parser) - appendOutputParser(parser); - outputParser()->setWorkingDirectory(pp->effectiveWorkingDirectory()); - m_androidDirsToClean.clear(); // don't remove gradle's cache, it takes ages to rebuild it. m_androidDirsToClean << dirPath + "/assets"; @@ -97,6 +120,24 @@ bool AndroidPackageInstallationStep::init() return AbstractProcessStep::init(); } +QString AndroidPackageInstallationStep::nativeAndroidBuildPath() const +{ + QString buildPath = buildDirectory().pathAppended(Constants::ANDROID_BUILDDIRECTORY).toString(); + if (HostOsInfo::isWindowsHost()) + if (buildEnvironment().searchInPath("sh.exe").isEmpty()) + buildPath = QDir::toNativeSeparators(buildPath); + + return buildPath; +} + +void AndroidPackageInstallationStep::setupOutputFormatter(OutputFormatter *formatter) +{ + formatter->addLineParser(new GnuMakeParser); + formatter->addLineParsers(target()->kit()->createOutputParsers()); + formatter->addSearchDir(processParameters()->effectiveWorkingDirectory()); + AbstractProcessStep::setupOutputFormatter(formatter); +} + void AndroidPackageInstallationStep::doRun() { QString error; @@ -119,20 +160,6 @@ BuildStepConfigWidget *AndroidPackageInstallationStep::createConfigWidget() return new AndroidPackageInstallationStepWidget(this); } - -// -// AndroidPackageInstallationStepWidget -// - -namespace Internal { - -AndroidPackageInstallationStepWidget::AndroidPackageInstallationStepWidget(AndroidPackageInstallationStep *step) - : BuildStepConfigWidget(step) -{ - setDisplayName(tr("Make install")); - setSummaryText("<b>" + tr("Make install") + "</b>"); -} - // // AndroidPackageInstallationStepFactory // |