Android(安卓)Studio 本地化配置gradle的buildToolsVersion和gradleBuildTools
转载至:https://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 中的版本号随便他们改好了,反正又不会传到代码仓库。
更多相关文章
- You must call removeView() on the child's parent first
- android截图代码
- Android(安卓)代码风格指南
- Android(安卓)工具类 Toast Log.d()
- android ddms查看线程
- Android全屏的两种方法
- Android(安卓)JNI编程内存问题定位方法
- Android: 自定义Tab样式
- Android(安卓)adb setuid提权漏洞的分析