diff options
author | hjk <[email protected]> | 2019-08-01 10:12:34 +0200 |
---|---|---|
committer | hjk <[email protected]> | 2019-10-01 08:15:55 +0000 |
commit | fc2e22dad247445ed4134afbbaff7d9960fd18e2 (patch) | |
tree | 5eb80fb6192cba013bfb24806bba55f52a61bb9e /src/plugins/android | |
parent | e90081cd8817716914d139f9b6888c39926df61a (diff) |
Android: Move logic to trigger AndroidManager::updateGradleProperties
Previously, AndroidManager::updateGradleProperties operated always
on a project node found using target->activeRunConfiguration()
which might or might not be the one that will actually be used
after the build.
This here still does not address the problem that the activeRunConfiguration
may change but introduces a way to specify the relevant node, and tries
to use the right one when available.
At some time, this could be developed into a real solution, e.g.
by invalidating the cache on build key changes.
Change-Id: I37a3d73e9ad3615025e4def2493f683d11add3c6
Reviewed-by: BogDan Vatra <[email protected]>
Diffstat (limited to 'src/plugins/android')
-rw-r--r-- | src/plugins/android/androidbuildapkstep.cpp | 1 | ||||
-rw-r--r-- | src/plugins/android/androidbuildapkwidget.cpp | 1 | ||||
-rw-r--r-- | src/plugins/android/androidmanager.cpp | 13 | ||||
-rw-r--r-- | src/plugins/android/androidmanager.h | 2 | ||||
-rw-r--r-- | src/plugins/android/androidplugin.cpp | 28 | ||||
-rw-r--r-- | src/plugins/android/androidrunconfiguration.cpp | 1 | ||||
-rw-r--r-- | src/plugins/android/createandroidmanifestwizard.cpp | 2 |
7 files changed, 15 insertions, 33 deletions
diff --git a/src/plugins/android/androidbuildapkstep.cpp b/src/plugins/android/androidbuildapkstep.cpp index df2708c3748..4cff7c90abb 100644 --- a/src/plugins/android/androidbuildapkstep.cpp +++ b/src/plugins/android/androidbuildapkstep.cpp @@ -510,7 +510,6 @@ QString AndroidBuildApkStep::buildTargetSdk() const void AndroidBuildApkStep::setBuildTargetSdk(const QString &sdk) { m_buildTargetSdk = sdk; - AndroidManager::updateGradleProperties(target()); } QVariant AndroidBuildApkStep::data(Core::Id id) const diff --git a/src/plugins/android/androidbuildapkwidget.cpp b/src/plugins/android/androidbuildapkwidget.cpp index ccb94542258..0edf6aef3f8 100644 --- a/src/plugins/android/androidbuildapkwidget.cpp +++ b/src/plugins/android/androidbuildapkwidget.cpp @@ -104,6 +104,7 @@ QWidget *AndroidBuildApkWidget::createApplicationGroup() connect(targetSDKComboBox, cbActivated, this, [this, targetSDKComboBox](int idx) { const QString sdk = targetSDKComboBox->itemText(idx); m_step->setBuildTargetSdk(sdk); + AndroidManager::updateGradleProperties(step()->target(), QString()); // FIXME: Use real key. }); auto hbox = new QHBoxLayout(group); diff --git a/src/plugins/android/androidmanager.cpp b/src/plugins/android/androidmanager.cpp index 2ce27e5d26a..b0f887a74da 100644 --- a/src/plugins/android/androidmanager.cpp +++ b/src/plugins/android/androidmanager.cpp @@ -683,13 +683,22 @@ static bool mergeGradleProperties(const QString &path, GradleProperties properti } -bool AndroidManager::updateGradleProperties(ProjectExplorer::Target *target) +bool AndroidManager::updateGradleProperties(ProjectExplorer::Target *target, const QString &buildKey) { QtSupport::BaseQtVersion *version = QtSupport::QtKitAspect::qtVersion(target->kit()); if (!version) return false; - const ProjectNode *node = currentProjectNode(target); + QString key = buildKey; + if (key.isEmpty()) { + // FIXME: This case is triggered from AndroidBuildApkWidget::createApplicationGroup + // and should be avoided. + if (RunConfiguration *rc = target->activeRunConfiguration()) + key = rc->buildKey(); + } + + QTC_ASSERT(!key.isEmpty(), return false); + const ProjectNode *node = target->project()->findNodeForBuildKey(key); if (!node) return false; diff --git a/src/plugins/android/androidmanager.h b/src/plugins/android/androidmanager.h index 73e0fa79cbd..a6af5651e9f 100644 --- a/src/plugins/android/androidmanager.h +++ b/src/plugins/android/androidmanager.h @@ -117,7 +117,7 @@ public: static bool checkCertificatePassword(const QString &keystorePath, const QString &keystorePasswd, const QString &alias, const QString &certificatePasswd); static bool checkCertificateExists(const QString &keystorePath, const QString &keystorePasswd, const QString &alias); - static bool updateGradleProperties(ProjectExplorer::Target *target); + static bool updateGradleProperties(ProjectExplorer::Target *target, const QString &buildKey); static int findApiLevel(const Utils::FilePath &platformPath); static QProcess *runAdbCommandDetached(const QStringList &args, QString *err = nullptr, diff --git a/src/plugins/android/androidplugin.cpp b/src/plugins/android/androidplugin.cpp index d8225eebaea..17926f653cb 100644 --- a/src/plugins/android/androidplugin.cpp +++ b/src/plugins/android/androidplugin.cpp @@ -98,34 +98,6 @@ public: class AndroidPluginPrivate : public QObject { public: - AndroidPluginPrivate() - { - connect(SessionManager::instance(), &SessionManager::projectAdded, this, [=](Project *project) { - for (Target *target : project->targets()) - handleNewTarget(target); - connect(project, &Project::addedTarget, this, &AndroidPluginPrivate::handleNewTarget); - }); - } - - void handleNewTarget(Target *target) - { - if (DeviceTypeKitAspect::deviceTypeId(target->kit()) != Android::Constants::ANDROID_DEVICE_TYPE) - return; - - for (BuildConfiguration *bc : target->buildConfigurations()) - handleNewBuildConfiguration(bc); - - connect(target, &Target::addedBuildConfiguration, - this, &AndroidPluginPrivate::handleNewBuildConfiguration); - } - - void handleNewBuildConfiguration(BuildConfiguration *bc) - { - connect(bc->target()->project(), &Project::parsingFinished, bc, [bc] { - AndroidManager::updateGradleProperties(bc->target()); - }); - } - AndroidConfigurations androidConfiguration; AndroidSettingsPage settingsPage; AndroidDeployQtStepFactory deployQtStepFactory; diff --git a/src/plugins/android/androidrunconfiguration.cpp b/src/plugins/android/androidrunconfiguration.cpp index 95eb3e1a2d3..01b0c6050af 100644 --- a/src/plugins/android/androidrunconfiguration.cpp +++ b/src/plugins/android/androidrunconfiguration.cpp @@ -134,6 +134,7 @@ AndroidRunConfiguration::AndroidRunConfiguration(Target *target, Core::Id id) connect(target->project(), &Project::parsingFinished, this, [this] { updateTargetInformation(); + AndroidManager::updateGradleProperties(this->target(), buildKey()); }); } diff --git a/src/plugins/android/createandroidmanifestwizard.cpp b/src/plugins/android/createandroidmanifestwizard.cpp index ca386fa9075..70f75fed98a 100644 --- a/src/plugins/android/createandroidmanifestwizard.cpp +++ b/src/plugins/android/createandroidmanifestwizard.cpp @@ -343,7 +343,7 @@ void CreateAndroidManifestWizard::createAndroidTemplateFiles() nullptr, [this, &addedFiles](QFileInfo src, QFileInfo dst, QString *){return copy(src, dst, &addedFiles);}); } - AndroidManager::updateGradleProperties(m_target); + AndroidManager::updateGradleProperties(m_target, m_buildKey); } |