diff --git a/src/plugins/android/androidpackageinstallationstep.cpp b/src/plugins/android/androidpackageinstallationstep.cpp index 8f8350c217c..c94cfdfe53c 100644 --- a/src/plugins/android/androidpackageinstallationstep.cpp +++ b/src/plugins/android/androidpackageinstallationstep.cpp @@ -94,6 +94,8 @@ bool AndroidPackageInstallationStep::init() appendOutputParser(parser); outputParser()->setWorkingDirectory(pp->effectiveWorkingDirectory()); + m_androidDirToClean = m_androidDirectory == BuildDirectory ? dirPath : QString(); + return AbstractProcessStep::init(); } @@ -105,6 +107,22 @@ bool AndroidPackageInstallationStep::fromMap(const QVariantMap &map) return true; } +void AndroidPackageInstallationStep::run(QFutureInterface &fi) +{ + QString error; + Utils::FileName androidDir = Utils::FileName::fromString(m_androidDirToClean); + if (!m_androidDirToClean.isEmpty()&& androidDir.toFileInfo().exists()) { + emit addOutput(tr("Removing directory %1").arg(m_androidDirToClean), MessageOutput); + if (!Utils::FileUtils::removeRecursively(androidDir, &error)) { + emit addOutput(error, ErrorOutput); + fi.reportResult(false); + emit finished(); + return; + } + } + AbstractProcessStep::run(fi); +} + QVariantMap AndroidPackageInstallationStep::toMap() const { QVariantMap map = AbstractProcessStep::toMap(); diff --git a/src/plugins/android/androidpackageinstallationstep.h b/src/plugins/android/androidpackageinstallationstep.h index 4c5a60fdc95..4608c1d7ea3 100644 --- a/src/plugins/android/androidpackageinstallationstep.h +++ b/src/plugins/android/androidpackageinstallationstep.h @@ -52,10 +52,12 @@ public: ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); bool immutable() const; + void run(QFutureInterface &fi); private: AndroidPackageInstallationStep(ProjectExplorer::BuildStepList *bc, AndroidPackageInstallationStep *other); AndroidDirectory m_androidDirectory; + QString m_androidDirToClean; static const Core::Id Id; };