From e88e47ff687ee6ea5836a262752a60e44586dc4b Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 3 Jul 2018 11:22:37 +0200 Subject: [PATCH] Android: Use less direct access to the qmake build step Instead of qobject_cast use the reacently introduced virtual function BuildConfiguration::regenerateBuildFiles() to trigger the necessary work in the qmake case. Change-Id: Ie5fd36550b5bad8c5f3f8bb1e2a3a16843f8f5b7 Reviewed-by: Vikas Pachdha --- .../android/androidmanifesteditorwidget.cpp | 14 +++++++++++--- .../android/androidmanifesteditorwidget.h | 1 + src/plugins/android/androidqtsupport.h | 1 - src/plugins/projectexplorer/buildconfiguration.h | 2 +- .../androidqmakebuildconfigurationfactory.cpp | 16 ++-------------- .../androidqmakebuildconfigurationfactory.h | 4 ---- .../qmakeandroidsupport/qmakeandroidsupport.cpp | 7 ------- .../qmakeandroidsupport/qmakeandroidsupport.h | 1 - 8 files changed, 15 insertions(+), 31 deletions(-) diff --git a/src/plugins/android/androidmanifesteditorwidget.cpp b/src/plugins/android/androidmanifesteditorwidget.cpp index b5f2ce80246..6117e917743 100644 --- a/src/plugins/android/androidmanifesteditorwidget.cpp +++ b/src/plugins/android/androidmanifesteditorwidget.cpp @@ -25,6 +25,7 @@ #include "androidmanifesteditorwidget.h" #include "androidmanifesteditor.h" +#include "androidconfigurations.h" #include "androidconstants.h" #include "androidmanifestdocument.h" #include "androidmanager.h" @@ -34,6 +35,7 @@ #include #include +#include #include #include #include @@ -605,9 +607,15 @@ void AndroidManifestEditorWidget::postSave() ProjectExplorer::Project *project = androidProject(docPath); if (project) { if (Target *target = project->activeTarget()) { - AndroidQtSupport *androidQtSupport = AndroidManager::androidQtSupport(target); - if (androidQtSupport) - androidQtSupport->manifestSaved(target); + if (BuildConfiguration *bc = target->activeBuildConfiguration()) { + QString androidNdkPlatform = AndroidConfigurations::currentConfig() + .bestNdkPlatformMatch(AndroidManager::minimumSDK(target)); + if (m_androidNdkPlatform != androidNdkPlatform) { + m_androidNdkPlatform = androidNdkPlatform; + bc->updateCacheAndEmitEnvironmentChanged(); + bc->regenerateBuildFiles(nullptr); + } + } } } } diff --git a/src/plugins/android/androidmanifesteditorwidget.h b/src/plugins/android/androidmanifesteditorwidget.h index 806921c2ce8..a9d21e44a34 100644 --- a/src/plugins/android/androidmanifesteditorwidget.h +++ b/src/plugins/android/androidmanifesteditorwidget.h @@ -191,6 +191,7 @@ private: QTimer m_timerParseCheck; TextEditor::TextEditorWidget *m_textEditorWidget; AndroidManifestEditor *m_editor; + QString m_androidNdkPlatform; }; } // namespace Internal } // namespace Android diff --git a/src/plugins/android/androidqtsupport.h b/src/plugins/android/androidqtsupport.h index a8bdcdacf5c..1dd72dd4c3d 100644 --- a/src/plugins/android/androidqtsupport.h +++ b/src/plugins/android/androidqtsupport.h @@ -70,7 +70,6 @@ public: virtual QStringList soLibSearchPath(const ProjectExplorer::Target *target) const = 0; virtual QStringList projectTargetApplications(const ProjectExplorer::Target *target) const = 0; virtual Utils::FileName apkPath(const ProjectExplorer::Target *target) const; - virtual void manifestSaved(const ProjectExplorer::Target *target) = 0; virtual QString targetDataItem(Core::Id role, const ProjectExplorer::Target *target) const = 0; virtual QStringList targetData(Core::Id role, const ProjectExplorer::Target *target) const = 0; diff --git a/src/plugins/projectexplorer/buildconfiguration.h b/src/plugins/projectexplorer/buildconfiguration.h index c8832811264..a368fe49099 100644 --- a/src/plugins/projectexplorer/buildconfiguration.h +++ b/src/plugins/projectexplorer/buildconfiguration.h @@ -96,6 +96,7 @@ public: void prependCompilerPathToEnvironment(Utils::Environment &env) const; static void prependCompilerPathToEnvironment(Kit *k, Utils::Environment &env); + void updateCacheAndEmitEnvironmentChanged(); signals: void environmentChanged(); @@ -105,7 +106,6 @@ signals: protected: virtual void initialize(const BuildInfo *info); - void updateCacheAndEmitEnvironmentChanged(); private: void emitBuildDirectoryChanged(); diff --git a/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.cpp b/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.cpp index b6c300c43b2..308caa4719b 100644 --- a/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.cpp +++ b/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.cpp @@ -32,11 +32,10 @@ #include #include +#include #include #include -#include -#include #include using namespace Android; @@ -77,20 +76,9 @@ void AndroidQmakeBuildConfiguration::initialize(const BuildInfo *info) } void AndroidQmakeBuildConfiguration::addToEnvironment(Utils::Environment &env) const -{ - m_androidNdkPlatform = AndroidConfigurations::currentConfig().bestNdkPlatformMatch(AndroidManager::minimumSDK(target())); - env.set(QLatin1String("ANDROID_NDK_PLATFORM"), m_androidNdkPlatform); -} - -void AndroidQmakeBuildConfiguration::manifestSaved() { QString androidNdkPlatform = AndroidConfigurations::currentConfig().bestNdkPlatformMatch(AndroidManager::minimumSDK(target())); - if (m_androidNdkPlatform == androidNdkPlatform) - return; - - updateCacheAndEmitEnvironmentChanged(); - - regenerateBuildFiles(); + env.set(QLatin1String("ANDROID_NDK_PLATFORM"), androidNdkPlatform); } } // namespace Internal diff --git a/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.h b/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.h index 71d727adb9e..361cf9b80dc 100644 --- a/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.h +++ b/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.h @@ -45,10 +45,6 @@ public: void initialize(const ProjectExplorer::BuildInfo *info) override; void addToEnvironment(Utils::Environment &env) const override; - void manifestSaved(); - -private: - mutable QString m_androidNdkPlatform; }; } // namespace Internal diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidsupport.cpp b/src/plugins/qmakeandroidsupport/qmakeandroidsupport.cpp index 84d703bf185..117d7308304 100644 --- a/src/plugins/qmakeandroidsupport/qmakeandroidsupport.cpp +++ b/src/plugins/qmakeandroidsupport/qmakeandroidsupport.cpp @@ -198,13 +198,6 @@ QStringList QmakeAndroidSupport::projectTargetApplications(const ProjectExplorer return apps; } -void QmakeAndroidSupport::manifestSaved(const ProjectExplorer::Target *target) -{ - ProjectExplorer::BuildConfiguration *bc = target->activeBuildConfiguration(); - if (auto qbc = qobject_cast(bc)) - qbc->manifestSaved(); -} - void QmakeAndroidSupport::addFiles(const ProjectExplorer::Target *target, const QString &buildKey, const QStringList &addedFiles) const diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidsupport.h b/src/plugins/qmakeandroidsupport/qmakeandroidsupport.h index a8a4920ded5..989b42cf92d 100644 --- a/src/plugins/qmakeandroidsupport/qmakeandroidsupport.h +++ b/src/plugins/qmakeandroidsupport/qmakeandroidsupport.h @@ -38,7 +38,6 @@ public: bool canHandle(const ProjectExplorer::Target *target) const override; QStringList soLibSearchPath(const ProjectExplorer::Target *target) const override; QStringList projectTargetApplications(const ProjectExplorer::Target *target) const override; - void manifestSaved(const ProjectExplorer::Target *target) override; QString targetDataItem(Core::Id role, const ProjectExplorer::Target *target) const override; QStringList targetData(Core::Id role, const ProjectExplorer::Target *target) const override;