aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/android
diff options
context:
space:
mode:
authorhjk <[email protected]>2019-08-01 10:12:34 +0200
committerhjk <[email protected]>2019-10-01 08:15:55 +0000
commitfc2e22dad247445ed4134afbbaff7d9960fd18e2 (patch)
tree5eb80fb6192cba013bfb24806bba55f52a61bb9e /src/plugins/android
parente90081cd8817716914d139f9b6888c39926df61a (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.cpp1
-rw-r--r--src/plugins/android/androidbuildapkwidget.cpp1
-rw-r--r--src/plugins/android/androidmanager.cpp13
-rw-r--r--src/plugins/android/androidmanager.h2
-rw-r--r--src/plugins/android/androidplugin.cpp28
-rw-r--r--src/plugins/android/androidrunconfiguration.cpp1
-rw-r--r--src/plugins/android/createandroidmanifestwizard.cpp2
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);
}