diff --git a/src/plugins/android/androidmanager.cpp b/src/plugins/android/androidmanager.cpp index 54e843954db..25f8903d01a 100644 --- a/src/plugins/android/androidmanager.cpp +++ b/src/plugins/android/androidmanager.cpp @@ -700,9 +700,21 @@ bool AndroidManager::updateGradleProperties(ProjectExplorer::Target *target) AndroidBuildApkStep *buildApkStep = AndroidGlobal::buildStep(target->activeBuildConfiguration()); - if (!buildApkStep || !buildApkStep->androidPackageSourceDir().appendPath(QLatin1String("gradlew")).exists()) + if (!buildApkStep || !buildApkStep->useGradle() || !buildApkStep->androidPackageSourceDir().appendPath(QLatin1String("gradlew")).exists()) return false; + Utils::FileName wrapperProps(buildApkStep->androidPackageSourceDir()); + wrapperProps.appendPath(QLatin1String("gradle/wrapper/gradle-wrapper.properties")); + if (wrapperProps.exists()) { + GradleProperties wrapperProperties = readGradleProperties(wrapperProps.toString()); + QString distributionUrl = QString::fromLocal8Bit(wrapperProperties["distributionUrl"]); + QRegExp re(QLatin1String(".*services.gradle.org/distributions/gradle-2..*.zip")); + if (!re.exactMatch(distributionUrl)) { + wrapperProperties["distributionUrl"] = "https\\://services.gradle.org/distributions/gradle-2.2.1-all.zip"; + mergeGradleProperties(wrapperProps.toString(), wrapperProperties); + } + } + GradleProperties localProperties; localProperties["sdk.dir"] = AndroidConfigurations::currentConfig().sdkLocation().toString().toLocal8Bit(); if (!mergeGradleProperties(buildApkStep->androidPackageSourceDir().appendPath(QLatin1String("local.properties")).toString(), localProperties)) diff --git a/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.cpp b/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.cpp index 0b347ca1924..64916930029 100644 --- a/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.cpp +++ b/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.cpp @@ -39,8 +39,10 @@ #include #include #include +#include #include +#include using namespace QmakeAndroidSupport::Internal; @@ -96,7 +98,16 @@ ProjectExplorer::BuildConfiguration *AndroidQmakeBuildConfigurationFactory::rest AndroidQmakeBuildConfiguration::AndroidQmakeBuildConfiguration(ProjectExplorer::Target *target) : QmakeProjectManager::QmakeBuildConfiguration(target) { + using QmakeProjectManager::QmakeProject; + auto updateGrade = [this] { + Android::AndroidManager::updateGradleProperties(BuildConfiguration::target()); + }; + QmakeProject *project = qobject_cast(target->project()); + if (project) + connect(project, &QmakeProject::proFilesEvaluated, this, updateGrade); + else + connect(this, &AndroidQmakeBuildConfiguration::enabledChanged, this, updateGrade); } AndroidQmakeBuildConfiguration::AndroidQmakeBuildConfiguration(ProjectExplorer::Target *target, AndroidQmakeBuildConfiguration *source)