AndroidStudio本地化配置gradle的buildToolsVersion和gradleBuildTools
2017-05-22 20:47
351 查看
版权声明:本文为博主原创文章,未经我的允许不得转载!
转载请标明出处: http://blog.csdn.net/guiying712/article/details/72629948 ,本文出自:【张华洋的博客】
在Android项目中的任何一个 build.gradle 文件中都可以把 gradle.properties 中的常量读取出来,不管这个 build.gradle 是组件的还是整个项目工程的 build.gradle;
gradle.properties 中的数据类型都是 String 类型,使用其他数据类型需要自行转换;
在每个Android组件的 build.gradle 中有一个属性:buildToolsVersion,表示构建工具的版本号,这个属性值对应 AndroidSDK 中的 Android SDK Build-tools,正常情况下 build.gradle 中的 buildToolsVersion 跟你电脑中 Android SDK Build-tools 的最新版本是一致的,比如现在 Android SDK Build-tools 的最新的版本是:25.0.3,那么我的Android项目中 build.gradle 中的 buildToolsVersion 版本号也是 25.0.3,但是一旦一个Android项目是由好几个人同时开发,总会出现每个人的开发环境 Android SDK Build-tools 是都是不一样的,并不是所有人都会经常升级更新 Android SDK,而且代码是保存到线上环境的(例如使用 SVN/Git 等工具),某个开发人员提交代码后线上Android项目中 build.gradle 中的 buildToolsVersion 也会被不断地改变。
另外一个原因是因为Android工程的根目录下的 build.gradle 声明了 Android Gradle 构建工具,而这个工具也是有版本号的,而且 Gradle Build Tools 的版本号跟 AndroidStudio 版本号一致的,但是有些开发人员基本很久都不会升级自己的 AndroidStudio 版本,导致团队中每个开发人员的 Gradle Build Tools 的版本号也不一致。
如果每次同步代码后这两个工具的版本号被改变了,开发人员可以自己手动改回来,并且不要把改动工具版本号的代码提交到线上环境,这样还可以勉强继续开发;但是很多公司都会使用持续集成工具(例如Jenkins)用于持续的软件版本发布,而Android出包是需要 Android SDK Build-tools 和 Gradle Build Tools 配合的,一旦提交到线上的版本跟持续集成工具所依赖的Android环境构建工具版本号不一致就会导致Android打包失败。
为了解决上面问题就必须将Android项目中 build.gradle 中的 buildToolsVersion 和 GradleBuildTools 版本号从线上代码隔离出来,保证线上代码的 buildToolsVersion 和 Gradle Build Tools 版本号不会被人为改变。
2、然后在Android工程的 build.gradle 中引用 localGradlePluginVersion:
3、在组件的build.gradle中引用 localBuildToolsVersion:
4、最后是最重要的一步,一定要将 gradle.properties 从版本控制工具(Git、SVN)中给忽略掉,千万不要把这个文件提交到代码仓库;然后把配置好的 gradle.properties 给每个开发人员发一份,供他们本地使用,至于 gradle.properties 中的版本号随便他们改好了,反正又不会传到代码仓库。
为了能够更直观的理解这篇文章,请查看:Android组件化项目AndroidModulePattern
转载请标明出处: http://blog.csdn.net/guiying712/article/details/72629948 ,本文出自:【张华洋的博客】
1、Android工程中的gradle.properties
gradle.properties 有两个非常有用的属性:在Android项目中的任何一个 build.gradle 文件中都可以把 gradle.properties 中的常量读取出来,不管这个 build.gradle 是组件的还是整个项目工程的 build.gradle;
gradle.properties 中的数据类型都是 String 类型,使用其他数据类型需要自行转换;
2、gradle.properties能够解决的问题
利用 gradle.properties 的属性可以解决在多人协同开发Android项目的时候,因为开发团队成员的Android开发环境(开发环境指 Android SDK 和 AndroidStudio)不一致而导致频繁改变线上项目的 build.gradle 配置。在每个Android组件的 build.gradle 中有一个属性:buildToolsVersion,表示构建工具的版本号,这个属性值对应 AndroidSDK 中的 Android SDK Build-tools,正常情况下 build.gradle 中的 buildToolsVersion 跟你电脑中 Android SDK Build-tools 的最新版本是一致的,比如现在 Android SDK Build-tools 的最新的版本是:25.0.3,那么我的Android项目中 build.gradle 中的 buildToolsVersion 版本号也是 25.0.3,但是一旦一个Android项目是由好几个人同时开发,总会出现每个人的开发环境 Android SDK Build-tools 是都是不一样的,并不是所有人都会经常升级更新 Android SDK,而且代码是保存到线上环境的(例如使用 SVN/Git 等工具),某个开发人员提交代码后线上Android项目中 build.gradle 中的 buildToolsVersion 也会被不断地改变。
另外一个原因是因为Android工程的根目录下的 build.gradle 声明了 Android Gradle 构建工具,而这个工具也是有版本号的,而且 Gradle Build Tools 的版本号跟 AndroidStudio 版本号一致的,但是有些开发人员基本很久都不会升级自己的 AndroidStudio 版本,导致团队中每个开发人员的 Gradle Build Tools 的版本号也不一致。
如果每次同步代码后这两个工具的版本号被改变了,开发人员可以自己手动改回来,并且不要把改动工具版本号的代码提交到线上环境,这样还可以勉强继续开发;但是很多公司都会使用持续集成工具(例如Jenkins)用于持续的软件版本发布,而Android出包是需要 Android SDK Build-tools 和 Gradle Build Tools 配合的,一旦提交到线上的版本跟持续集成工具所依赖的Android环境构建工具版本号不一致就会导致Android打包失败。
为了解决上面问题就必须将Android项目中 build.gradle 中的 buildToolsVersion 和 GradleBuildTools 版本号从线上代码隔离出来,保证线上代码的 buildToolsVersion 和 Gradle Build Tools 版本号不会被人为改变。
3、配置策略
1、首先在Android工程的 gradle.properties 中分别定义两个常量:localBuildToolsVersion 和 localGradlePluginVersion,分别表示 buildToolsVersion 和 Gradle Build Tools 的版本号:# 为自动化出包配置(因为每个开发的电脑坏境不一致) localBuildToolsVersion=25.0.3 # 这个值一般跟你的AndroidStudio版本号一致 localGradlePluginVersion=2.3.2
2、然后在Android工程的 build.gradle 中引用 localGradlePluginVersion:
dependencies { //classpath "com.android.tools.build:gradle:$localGradlePluginVersion" //$localGradlePluginVersion是gradle.properties中的数据 classpath "com.android.tools.build:gradle:$localGradlePluginVersion" }
3、在组件的build.gradle中引用 localBuildToolsVersion:
android { compileSdkVersion rootProject.ext.compileSdkVersion //localBuildToolsVersion是gradle.properties中的数据 buildToolsVersion localBuildToolsVersion defaultConfig { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode rootProject.ext.versionCode versionName rootProject.ext.versionName } }
4、最后是最重要的一步,一定要将 gradle.properties 从版本控制工具(Git、SVN)中给忽略掉,千万不要把这个文件提交到代码仓库;然后把配置好的 gradle.properties 给每个开发人员发一份,供他们本地使用,至于 gradle.properties 中的版本号随便他们改好了,反正又不会传到代码仓库。
为了能够更直观的理解这篇文章,请查看:Android组件化项目AndroidModulePattern
相关文章推荐
- AndroidStudio 中的 Android plugin version与Gradle version、SDK Build Tools之间的关系
- [置顶] buildToolsVersion和gradleBuildTools本地化管理配置
- AndroidStudio中gradle,buildToolsVersion,complieSdkVersion的关系
- build.gradle配置versionCode、versionName、apk的名字
- AndroidStudio 报错:Could not find com.android.tools.build:gradle
- Android Gradle插件(plugin)版本(version)与Gradle、SDK Build Tools版本关系
- AndroidStudio工具使用、build.gradle配置介绍(二)
- Android项目工程中的Gradle、compileSdkVersion、buildToolsVersion
- AndroidStudio中build.gradle文件详细配置说明
- Android Gradle插件(plugin)版本(version)与Gradle、SDK Build Tools版本关系
- Android Gradle插件(plugin)版本(version)与Gradle、SDK Build Tools版本关系
- [原创] Gradle DSL method not found: 'android()' 和 buildToolsVersion is not specified 的解决办法。
- Android gradle: buildtoolsVersion vs compileSdkVersion
- AndroidStudio1.4创建项目中build.gradle(Project:Test...)配置
- Androidstudio使用Gradle.build配置打包
- No cached version of com.android.tools.build:gradle:2.0.0 available for offline mode.
- 【AndroidStudio】Error:Could not find com.android.tools.build:gradle:2.3.3
- gradle 之compileSdkVersion,buildToolsVersion等
- Android Gradle插件(plugin)版本(version)与Gradle、SDK Build Tools版本关系
- Android Gradle插件(plugin)版本(version)与Gradle、SDK Build Tools版本关系