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

更多相关文章

  1. Android 工具类 Toast Log.d()
  2. Android 代码风格指南
  3. Android px和dip及sp的区别及转换代码
  4. Android Apache Commons工具库依赖列表
  5. Android 开发调试工具的使用总结
  6. Android 源代码编译前后的目录结构
  7. Android有用代码片段(三)
  8. Android 通过代码实现控制数据网络的开关(仅适用于5.0以上)

随机推荐

  1. android:layout_weight属性详解
  2. Android系统的架构
  3. Android中adb push和adb install的使用区
  4. app测试教程:ios与android的区别
  5. Android之——多线程下载示例
  6. Android读写XML(下)——创建XML文档
  7. [Android] 导入外部数据库
  8. [置顶] Android消息异步机制(ThreadLocal
  9. 浅谈android的selector背景选择器
  10. Android(安卓)Studio 安装具体步骤(配图)