我注意到在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在这些情况下不断提示我进行升级。如果我没有升级构建工具,有时似乎无法同步。
这里最好的政策是什么?我概述的两个主要选择之间的功能差异是什么?
这是我得到的提示的屏幕截图。它的措辞是这样的,除非我升级工具,否则它听起来不可能构建:
如果我点击"手动更新"为了防止它这样做,我得到:
答案 0 :(得分:1)
我认为"手动取消和更新"在更新对话框中满足您的需求
如果取消一次,您可以在状态行中看到该消息。 (请参见test8)
此外,如果您已选择更新,我认为您可以再次手动将其设置为更低。
选择"手动更新"导致构建错误一次,但如果再次构建它似乎不会发生错误。请参阅下面的测试6-8。
选择较低的gradle插件版本似乎也没有问题,因为我在完成所有测试后再次从test2进行了测试。
2017/12/12更新 相关资源(查看当前版本):
2017年12月6日
V4.4
Gradle插件(> = 3.0.0)
注意:有关详细信息,请参阅Add Build Dependencies程序化访问部分
Google's maven repo - master index com.android.tools.build
Google's maven repo - build tools group index gradle
3.0.1或3.1.0-alpha05
POM文件网址样本(对于稳定频道,> = 3.0.0):
注意:这些是gradle访问获取文件的路径之一
https://maven.google.com/com/android/tools/build/gradle/3.0.1/gradle-3.0.1.pom或
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.0.1/gradle-3.0.1.pom
POM文件网址示例(对于Alpha通道,> = 3.0.0):
https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.1.0-alpha05/gradle-3.1.0-alpha05.pom
旧gradle插件(< = 2.3.x)
Maven repo - gradle artifacts
以下是有关信息:
查看版本:
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:选择"取消并手动更新后失败"
在留言窗口中:
错误:该项目使用的是Android Gradle插件的不兼容版本。
请更新您的项目以使用3.0.0版。
在build.gradle文件中搜索
注意:这是因为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"