diff --git a/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.cpp b/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.cpp index 2e51d28720d..0b347ca1924 100644 --- a/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.cpp +++ b/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.cpp @@ -34,7 +34,10 @@ #include #include + +#include #include +#include #include #include @@ -110,6 +113,27 @@ AndroidQmakeBuildConfiguration::AndroidQmakeBuildConfiguration(ProjectExplorer:: void AndroidQmakeBuildConfiguration::addToEnvironment(Utils::Environment &env) const { - env.set(QLatin1String("ANDROID_NDK_PLATFORM"), - Android::AndroidConfigurations::currentConfig().bestNdkPlatformMatch(Android::AndroidManager::minimumSDK(target()))); + m_androidNdkPlatform = Android::AndroidConfigurations::currentConfig().bestNdkPlatformMatch(Android::AndroidManager::minimumSDK(target())); + env.set(QLatin1String("ANDROID_NDK_PLATFORM"), m_androidNdkPlatform); +} + +void AndroidQmakeBuildConfiguration::manifestSaved() +{ + using QmakeProjectManager::QMakeStep; + QString androidNdkPlatform = Android::AndroidConfigurations::currentConfig().bestNdkPlatformMatch(Android::AndroidManager::minimumSDK(target())); + if (m_androidNdkPlatform == androidNdkPlatform) + return; + + emitEnvironmentChanged(); + + QMakeStep *qs = qmakeStep(); + if (!qs) + return; + + qs->setForced(true); + + ProjectExplorer::BuildManager::buildList(stepList(ProjectExplorer::Constants::BUILDSTEPS_CLEAN), + ProjectExplorer::ProjectExplorerPlugin::displayNameForStepId(ProjectExplorer::Constants::BUILDSTEPS_CLEAN)); + ProjectExplorer::BuildManager::appendStep(qs, ProjectExplorer::ProjectExplorerPlugin::displayNameForStepId(ProjectExplorer::Constants::BUILDSTEPS_CLEAN)); + setSubNodeBuild(0); } diff --git a/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.h b/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.h index 900a57855da..d4a52666123 100644 --- a/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.h +++ b/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.h @@ -61,8 +61,11 @@ public: AndroidQmakeBuildConfiguration(ProjectExplorer::Target *target, AndroidQmakeBuildConfiguration *source); AndroidQmakeBuildConfiguration(ProjectExplorer::Target *target, Core::Id id); void addToEnvironment(Utils::Environment &env) const; + void manifestSaved(); using BuildConfiguration::emitEnvironmentChanged; +private: + mutable QString m_androidNdkPlatform; }; } // namespace Internal diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidsupport.cpp b/src/plugins/qmakeandroidsupport/qmakeandroidsupport.cpp index a5ef5579ecf..23b190c2c1a 100644 --- a/src/plugins/qmakeandroidsupport/qmakeandroidsupport.cpp +++ b/src/plugins/qmakeandroidsupport/qmakeandroidsupport.cpp @@ -36,17 +36,9 @@ #include #include -#include -#include -#include -#include -#include #include #include -#include -#include #include -#include using namespace QmakeProjectManager; @@ -136,20 +128,8 @@ Utils::FileName QmakeAndroidSupport::androiddeployJsonPath(ProjectExplorer::Targ void QmakeAndroidSupport::manifestSaved(const ProjectExplorer::Target *target) { ProjectExplorer::BuildConfiguration *bc = target->activeBuildConfiguration(); - if (auto qbc = qobject_cast(bc)) { - qbc->emitEnvironmentChanged(); - - QMakeStep *qs = qbc->qmakeStep(); - if (!qs) - return; - - qs->setForced(true); - - ProjectExplorer::BuildManager::buildList(bc->stepList(ProjectExplorer::Constants::BUILDSTEPS_CLEAN), - ProjectExplorer::ProjectExplorerPlugin::displayNameForStepId(ProjectExplorer::Constants::BUILDSTEPS_CLEAN)); - ProjectExplorer::BuildManager::appendStep(qs, ProjectExplorer::ProjectExplorerPlugin::displayNameForStepId(ProjectExplorer::Constants::BUILDSTEPS_CLEAN)); - qbc->setSubNodeBuild(0); - } + if (auto qbc = qobject_cast(bc)) + qbc->manifestSaved(); } Utils::FileName QmakeAndroidSupport::manifestSourcePath(const ProjectExplorer::Target *target)