Android Studio 本地化配置gradle的buildToolsVersion和gradleBuildTools

转载至:https://blog.csdn.net/guiying712/article/details/72629948

1、Android工程中的gradle.properties

gradle.properties 有两个非常有用的属性:

  1. 在Android项目中的任何一个 build.gradle 文件中都可以把 gradle.properties 中的常量读取出来,不管这个 build.gradle 是组件的还是整个项目工程的 build.gradle;

  2. 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 中的版本号随便他们改好了,反正又不会传到代码仓库。

猜你喜欢

转载自blog.csdn.net/t_yoo_csdn/article/details/81064321