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 <vikas.pachdha@qt.io>
This commit is contained in:
hjk
2018-07-03 11:22:37 +02:00
parent d41e690c84
commit e88e47ff68
8 changed files with 15 additions and 31 deletions

View File

@@ -25,6 +25,7 @@
#include "androidmanifesteditorwidget.h" #include "androidmanifesteditorwidget.h"
#include "androidmanifesteditor.h" #include "androidmanifesteditor.h"
#include "androidconfigurations.h"
#include "androidconstants.h" #include "androidconstants.h"
#include "androidmanifestdocument.h" #include "androidmanifestdocument.h"
#include "androidmanager.h" #include "androidmanager.h"
@@ -34,6 +35,7 @@
#include <coreplugin/infobar.h> #include <coreplugin/infobar.h>
#include <coreplugin/editormanager/ieditor.h> #include <coreplugin/editormanager/ieditor.h>
#include <projectexplorer/buildconfiguration.h>
#include <projectexplorer/project.h> #include <projectexplorer/project.h>
#include <projectexplorer/projectwindow.h> #include <projectexplorer/projectwindow.h>
#include <projectexplorer/session.h> #include <projectexplorer/session.h>
@@ -605,9 +607,15 @@ void AndroidManifestEditorWidget::postSave()
ProjectExplorer::Project *project = androidProject(docPath); ProjectExplorer::Project *project = androidProject(docPath);
if (project) { if (project) {
if (Target *target = project->activeTarget()) { if (Target *target = project->activeTarget()) {
AndroidQtSupport *androidQtSupport = AndroidManager::androidQtSupport(target); if (BuildConfiguration *bc = target->activeBuildConfiguration()) {
if (androidQtSupport) QString androidNdkPlatform = AndroidConfigurations::currentConfig()
androidQtSupport->manifestSaved(target); .bestNdkPlatformMatch(AndroidManager::minimumSDK(target));
if (m_androidNdkPlatform != androidNdkPlatform) {
m_androidNdkPlatform = androidNdkPlatform;
bc->updateCacheAndEmitEnvironmentChanged();
bc->regenerateBuildFiles(nullptr);
}
}
} }
} }
} }

View File

@@ -191,6 +191,7 @@ private:
QTimer m_timerParseCheck; QTimer m_timerParseCheck;
TextEditor::TextEditorWidget *m_textEditorWidget; TextEditor::TextEditorWidget *m_textEditorWidget;
AndroidManifestEditor *m_editor; AndroidManifestEditor *m_editor;
QString m_androidNdkPlatform;
}; };
} // namespace Internal } // namespace Internal
} // namespace Android } // namespace Android

View File

@@ -70,7 +70,6 @@ public:
virtual QStringList soLibSearchPath(const ProjectExplorer::Target *target) const = 0; virtual QStringList soLibSearchPath(const ProjectExplorer::Target *target) const = 0;
virtual QStringList projectTargetApplications(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 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 QString targetDataItem(Core::Id role, const ProjectExplorer::Target *target) const = 0;
virtual QStringList targetData(Core::Id role, const ProjectExplorer::Target *target) const = 0; virtual QStringList targetData(Core::Id role, const ProjectExplorer::Target *target) const = 0;

View File

@@ -96,6 +96,7 @@ public:
void prependCompilerPathToEnvironment(Utils::Environment &env) const; void prependCompilerPathToEnvironment(Utils::Environment &env) const;
static void prependCompilerPathToEnvironment(Kit *k, Utils::Environment &env); static void prependCompilerPathToEnvironment(Kit *k, Utils::Environment &env);
void updateCacheAndEmitEnvironmentChanged();
signals: signals:
void environmentChanged(); void environmentChanged();
@@ -105,7 +106,6 @@ signals:
protected: protected:
virtual void initialize(const BuildInfo *info); virtual void initialize(const BuildInfo *info);
void updateCacheAndEmitEnvironmentChanged();
private: private:
void emitBuildDirectoryChanged(); void emitBuildDirectoryChanged();

View File

@@ -32,11 +32,10 @@
#include <android/androidpackageinstallationstep.h> #include <android/androidpackageinstallationstep.h>
#include <projectexplorer/buildsteplist.h> #include <projectexplorer/buildsteplist.h>
#include <projectexplorer/project.h>
#include <projectexplorer/projectexplorerconstants.h> #include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/target.h> #include <projectexplorer/target.h>
#include <qmakeprojectmanager/qmakebuildinfo.h>
#include <qmakeprojectmanager/qmakeproject.h>
#include <qmakeprojectmanager/qmakeprojectmanagerconstants.h> #include <qmakeprojectmanager/qmakeprojectmanagerconstants.h>
using namespace Android; using namespace Android;
@@ -77,20 +76,9 @@ void AndroidQmakeBuildConfiguration::initialize(const BuildInfo *info)
} }
void AndroidQmakeBuildConfiguration::addToEnvironment(Utils::Environment &env) const 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())); QString androidNdkPlatform = AndroidConfigurations::currentConfig().bestNdkPlatformMatch(AndroidManager::minimumSDK(target()));
if (m_androidNdkPlatform == androidNdkPlatform) env.set(QLatin1String("ANDROID_NDK_PLATFORM"), androidNdkPlatform);
return;
updateCacheAndEmitEnvironmentChanged();
regenerateBuildFiles();
} }
} // namespace Internal } // namespace Internal

View File

@@ -45,10 +45,6 @@ public:
void initialize(const ProjectExplorer::BuildInfo *info) override; void initialize(const ProjectExplorer::BuildInfo *info) override;
void addToEnvironment(Utils::Environment &env) const override; void addToEnvironment(Utils::Environment &env) const override;
void manifestSaved();
private:
mutable QString m_androidNdkPlatform;
}; };
} // namespace Internal } // namespace Internal

View File

@@ -198,13 +198,6 @@ QStringList QmakeAndroidSupport::projectTargetApplications(const ProjectExplorer
return apps; return apps;
} }
void QmakeAndroidSupport::manifestSaved(const ProjectExplorer::Target *target)
{
ProjectExplorer::BuildConfiguration *bc = target->activeBuildConfiguration();
if (auto qbc = qobject_cast<AndroidQmakeBuildConfiguration *>(bc))
qbc->manifestSaved();
}
void QmakeAndroidSupport::addFiles(const ProjectExplorer::Target *target, void QmakeAndroidSupport::addFiles(const ProjectExplorer::Target *target,
const QString &buildKey, const QString &buildKey,
const QStringList &addedFiles) const const QStringList &addedFiles) const

View File

@@ -38,7 +38,6 @@ public:
bool canHandle(const ProjectExplorer::Target *target) const override; bool canHandle(const ProjectExplorer::Target *target) const override;
QStringList soLibSearchPath(const ProjectExplorer::Target *target) const override; QStringList soLibSearchPath(const ProjectExplorer::Target *target) const override;
QStringList projectTargetApplications(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; QString targetDataItem(Core::Id role, const ProjectExplorer::Target *target) const override;
QStringList targetData(Core::Id role, const ProjectExplorer::Target *target) const override; QStringList targetData(Core::Id role, const ProjectExplorer::Target *target) const override;