在VCS中的旧修补程序分支上升级Gradle构建工具

时间:2017-11-29 20:56:38

标签: android android-studio gradle

我注意到在Android Studio中加载你的项目时(当前在Canary Channel上运行3.1),它会强迫你升级Gradle Build Tools,有时当它检测到它没有使用最新版本时Gradle自己。我刚才谈到的两件作品是:

在根build.gradle中:

buildscript {
   dependencies {
      classpath 'com.android.tools.build:gradle:3.1.0-alpha03'
   }
}

gradle/wrapper/gradle-wrapper.properties

distributionUrl=https\://services.gradle.org/distributions/gradle-4.2.1-all.zip

请注意,我没有在Gradle脚本中指定buildToolsVersion(根据google documentation,这意味着它尝试使用最新版本)。我不喜欢指定它,因为我必须在我的Gradle脚本中不断更改版本。

在大多数情况下,我的问题是关于最佳做法。对于我们的软件,我们将我们发布的版本标记为生产,我们可能需要返回并修复任何这些版本。回到旧的修补程序时,我应该允许Android Studio升级构建工具吗?或者我应该阻止它这样做(假设我可以,可能通过手动指定buildToolsVersion)?如果是后一种情况,我不知道如何让Android Studio在这些情况下不断提示我进行升级。如果我没有升级构建工具,有时似乎无法同步。

这里最好的政策是什么?我概述的两个主要选择之间的功能差异是什么?

编辑:

这是我得到的提示的屏幕截图。它的措辞是这样的,除非我升级工具,否则它听起来不可能构建:

enter image description here

如果我点击"手动更新"为了防止它这样做,我得到:

enter image description here

1 个答案:

答案 0 :(得分:1)

我认为"手动取消和更新"在更新对话框中满足您的需求 如果取消一次,您可以在状态行中看到该消息。 (请参见test8)
此外,如果您已选择更新,我认为您可以再次手动将其设置为更低。

选择"手动更新"导致构建错误一次,但如果再次构建它似乎不会发生错误。请参阅下面的测试6-8。

选择较低的gradle插件版本似乎也没有问题,因为我在完成所有测试后再次从test2进行了测试。

2017/12/12更新 相关资源(查看当前版本):

以下是有关信息:

查看版本:
Android Studio版本:帮助>关于

Gradle插件版本:
的build.gradle(项目)
示例:classpath 'com.android.tools.build:gradle:3.1.0-alpha03'

Gradle版本:
gradle-wrapper.properties
示例:distributionUrl=https\://services.gradle.org/distributions/gradle-4.2.1-all.zip

NB1:每个gradle插件版本都需要Gradle版本。 请参阅此link的“更新Gradle”部分中的表格 例如:Gradle插件3.0.0需要Gradle 4.1或更高版本。

NB2:某些gradle插件版本需要buildToolsVersion,但基本上与它没有任何关系。
例如:Gradle插件3.0.0需要buildToolsVersion 26.0.2或更高版本。

NB3:某些gradle插件版本的发行说明为"这是一个支持Android Studio xxx的次要更新"
例如:Gradle插件3.0.0

部分
  

3。3。1(2017年11月)
  这是支持Android Studio 3.0.1的次要更新

我在下面的所有测试中都使用了相同的buildToolsVersion(27.0.1) 我认为Android Studio:2.2.x是2.2.3。 我使用(android-studio-ide-171.4408382-windows)用于Android Studio 3.0.x. ,不是现在的,但我已经下载了它。

测试1:

Android Studio:2.2.x
Gradle插件:2.3.3
Gradle:3.3
buildToolsVersion:27.0.1
buildscript / repositories:jcenter()

build:pass

测试2:

Android Studio:3.0.x
Gradle插件:2.3.3
Gradle:3.3
buildToolsVersion:27.0.1
buildscript / repositories:jcenter()

build:pass

注意:在为同一个项目将Android Studio版本从2.2.x更改为3.0.x时,我看到了一个更新对话框,但不是问题中的那个。
我已选择"明天出现"为了它。

测试3:

Android Studio:3.0.x
Gradle插件:2.3.3
Gradle:4.2.1
buildToolsVersion:27.0.1
buildscript / repositories:jcenter()

build:pass

测试4:

Android Studio:3.0.x
Gradle插件:3.0.1
Gradle:4.2.1
buildToolsVersion:27.0.1
buildscript / repositories:jcenter()

构建:失败

Gradle sync failed: Could not find com.android.tools.build:gradle:3.0.1.
...
https://jcenter.bintray.com/com/android/tools/build/gradle/3.0.1/gradle-3.0.1.pom

注意:必须更改存储库设置。

测试5:

Android Studio:3.0.x
Gradle插件:3.0.1
Gradle:4.2.1
buildToolsVersion:27.0.1
buildscript / repositories:google()

build:传递

测试6:

Android Studio:3.0.x
Gradle插件:3.0.0-alpha9
Gradle:4.2.1
buildToolsVersion:27.0.1
buildscript / repositories:google()

显示更新对话框 build:选择"取消并手动更新后失败"

Update dialog

在留言窗口中:
错误:该项目使用的是Android Gradle插件的不兼容版本。 请更新您的项目以使用3.0.0版。 在build.gradle文件中搜索

enter image description here

注意:这是因为gradle插件3.0.0或更高版本已经发布。

测试7:

Android Studio:3.0.x
Gradle插件:3.1.0-alpha03
Gradle:4.2.1
buildToolsVersion:27.0.1
buildscript / repositories:google()

不显示更新对话框 构建:失败

事件日志:

Gradle sync failed: Could not find org.jetbrains.kotlin:kotlin-stdlib-jre8:1.1.4-3.

NB1:必须添加kotlin NB2:kotlin需要mavenCentral存储库 见Kotlin - Using Gradle

测试8:

Android Studio:3.0.x
Gradle插件:3.1.0-alpha03
Gradle:4.2.1
buildToolsVersion:27.0.1
buildscript / repositories:google(),mavenCentral()

不显示更新对话框 建造:通过了 当我在build.config中单击classpath ... gradle行时,状态行中会显示一条消息,但没有问题。

build.gradle(Project)

buildscript {
    repositories {
        google()
        mavenCentral()
//      jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.0-alpha03'
//      classpath 'com.android.tools.build:gradle:3.0.0-alpha9'
//      classpath 'com.android.tools.build:gradle:3.0.1'
//      classpath 'com.android.tools.build:gradle:3.0.0'
//      classpath 'com.android.tools.build:gradle:2.3.3'
//      classpath 'com.android.tools.build:gradle:2.2.0'
        classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.2.0'
    }
}

gradle-wrapper.properties

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
#distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
#distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
#distributionUrl=https\://services.gradle.org/distributions/gradle-3.5.1-all.zip
#distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-4.2.1-all.zip

状态行

"新版本的com.android.tools.build:gradle比3.1.0-alpha03可用:3.1.0-alpha04"
enter image description here