Android Studio:“使用默认的 gradle 包装器”与“使用可定制的 gradle 包装器”
Posted
技术标签:
【中文标题】Android Studio:“使用默认的 gradle 包装器”与“使用可定制的 gradle 包装器”【英文标题】:Android Studio: "Use default gradle wrapper" vs. "Use customizable gradle wrapper" 【发布时间】:2014-09-08 19:46:33 【问题描述】:android Studio 的 Gradle 选项到底有什么区别:
Android Studio->Preferences->Gradle
Use default gradle wrapper (recommended)
和Use customizable gradle wrapper
?
背景:
我正在 Android Studio 中开发一个 Android 项目并使用 Gradle 包装器。
但是,当我每次使用 gui 命令同步 Android Studio 项目时,我的团队成员都使用 Android Studio 设置“使用可自定义的 gradlew 包装器”:
他们发现 gradle/wrapper/gradle-wrapper.properties
日期正在更新(并导致 git repo 上有额外的差异)。
切换到“使用默认 gradle 包装器”似乎可以解决这个问题。
【问题讨论】:
切换到“使用默认 gradle wrapper”似乎可以解决这个问题。这是正确的答案! 【参考方案1】:查看 IntelliJ IDEA 帮助here:
使用默认的 gradle 包装器意味着 Gradle 控制版本号 使用可自定义的 gradle wrapper 意味着 IDEA 控制 gradle wrapper 的版本号。版本号存储在gradle/wrapper/gradle-wrapper.properties
。所以当你每次用IDEA打开项目都选择“使用可定制的gradle wrapper”时,它会改变属性文件来调整你在IDEA项目中指定的wrapper版本。
为了可重复构建(即使在不运行 IDEA 的连续构建服务器上),让 Gradle 控制版本号并使用默认的 gradle 包装器。
您可以在 build.gradle
中设置 Gradle 使用的版本号
// needs at least Gradle V1.7
wrapper
gradleVersion = '2.2.1'
或
// works with every Gradle version
task wrapper(type: Wrapper)
gradleVersion = '2.2.1'
备注:不要忘记,这个配置只用于包装器的生成。要激活它,您必须使用gradlew wrapper
执行生成。此任务会更新 gradle-wrapper.properties
,然后将其用于所有包装器执行。
【讨论】:
可能值得澄清的是,提供的 build.gradle 包装器配置示例是配置 gradle 包装器脚本和属性文件的 generation,而不是指定的替代方法已生成包装文件的项目的 gradle 版本 没错,提供的build.gradle wrapper配置示例配置了gradle wrapper的生成(使用gradlew wrapper
:-) 执行)。一旦生成,它就会被使用 - 无论在build.gradle
中指定。)
我明白了。但是在阅读了您的答案后,我花了很多时间研究这个花絮。我试图建议对您的(非常好,谢谢!)答案进行编辑,以使该部分更加清晰。
你是对的。感谢您指出这一点,我更新了我的答案。并感谢您的积极反馈:-)
当您启动 gradlew
时,它会加载 gradle/wrapper/gradle-wrapper.properties
并检查定义的版本是否在本地可用。如果没有,它会下载它。然后它执行带有版本的 gradle jar。另一方面,包装器的代码仅用于将版本号写入gradle-wrapper.properties
。因此,当您有逻辑时,此逻辑将被忽略,除非您在目标系统上执行构建任务之前调用 gradle wrapper
。以上是关于Android Studio:“使用默认的 gradle 包装器”与“使用可定制的 gradle 包装器”的主要内容,如果未能解决你的问题,请参考以下文章