gradle差异环境协同开发

时间:2021-06-01 14:53:29

全局配置的两种方式

1.通过gradle.properties 来解决本地全局环境配置。

在一些项目中会分拆app 和 lib ,这时候引用support的时候,一旦更改版本会出现需要同步更改两个地方的问题.这种情况,可以通过配置gradle.properties实现替换.

在项目根目录的gradle.properties文件配置:

 Project-wide Gradle settings.
#添加ndk支持(按需添加)
android.useDeprecatedNdk=true
# 应用版本名称
VERSION_NAME=1.0.0
# 应用版本号
VERSION_CODE=100
# 支持库版本
SUPPORT_LIBRARY=24.2.1
# MIN_SDK_VERSION
ANDROID_BUILD_MIN_SDK_VERSION=14
# TARGET_SDK_VERSION
ANDROID_BUILD_TARGET_SDK_VERSION=24
# BUILD_SDK_VERSION
ANDROID_BUILD_SDK_VERSION=24
# BUILD_TOOLS_VERSION
ANDROID_BUILD_TOOLS_VERSION=24.0.3

这时候配置app和lib的build.gradle可以这样写:

android {
compileSdkVersion project.ANDROID_BUILD_SDK_VERSION as int
buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION
defaultConfig {
applicationId project.APPLICATION_ID
versionCode project.VERSION_CODE as int
versionName project.VERSION_NAME
minSdkVersion project.ANDROID_BUILD_MIN_SDK_VERSION as int
targetSdkVersion project.ANDROID_BUILD_TARGET_SDK_VERSION as int
}
}

dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
//这里注意是双引号
compile "com.android.support:appcompat-v7:${SUPPORT_LIBRARY}"
compile "com.android.support:design:${SUPPORT_LIBRARY}"
compile "com.android.support:recyclerview-v7:${SUPPORT_LIBRARY}"
compile "com.android.support:support-annotations:${SUPPORT_LIBRARY}"
compile "com.android.support:cardview-v7:${SUPPORT_LIBRARY}"
compile "com.android.support:support-v4:${SUPPORT_LIBRARY}"
}

这样配置后,当你需要升级你的编译版本,版本号,支持库等的时候,仅需要修改项目根目录的gradle.properties文件即可

2.通过local.properties配置文件来解决不同开发者之间的环境配置问题。

  • 当我们要解决多人协作开发或者不同环境协作开发的时候就要采用此法,推荐使用。

1.当然修改local.properties文件,在里面做相应的配置。
一般放置一些 sdk路径、NDK路径、签名文件路径、签名、本地的编译版本等。
systemProp.http.proxyHost=127.0.0.1
systemProp.http.proxyPort=8087

#gradle property
GRADLE_DOWNLOAD_TASK_VERSION=2.2.1
ANDROID_GRADLE_PLUGIN_VERSION=2.2.1

#build property
BUILD_TOOL_VERSION=23.0.3
COMPILE_SDK_VERSION=23
TARGET_SDK_VERSION=19
MIN_SDK_VERSION=10
SUPPORT_LIB_VERSION=23.0.3

#keystore property
STORE_FILE_PATH=../android-release-key.keystore
STORE_PASSWORD=codeignis
KEY_ALIAS=codeignis
KEY_PASSWORD=codeignis

#app peroperty
VERSION_NAME=1.0.1
VERSION_CODE=100

2.读取local.properties文件

一般是在根目录的build.gradle文件中进行读取和保存

ext{
Properties p = new Properties();
p.load(project.rootProject.file('local.properties').newDataInputStream())
if(java.lang.System.getenv("ANDROID_GOME")!=null){
sdkDir = System.getenv("ANDROID_HOME")
}else{
sdkDir = properties.getProperty('sdk.dir')
}
//#gradle property
GRADLE_DOWNLOAD_TASK_VERSION=p.getProperty("GRADLE_DOWNLOAD_TASK_VERSION")
ANDROID_GRADLE_PLUGIN_VERSION=p.getProperty("ANDROID_GRADLE_PLUGIN_VERSION")
//build property
BUILD_TOOL_VERSION=p.getProperty("BUILD_TOOL_VERSION")
COMPILE_SDK_VERSION = p.getProperty("COMPILE_SDK_VERSION").toInteger()
TARGET_SDK_VERSION=p.getProperty("TARGET_SDK_VERSION").toInteger()
MIN_SDK_VERSION=p.getProperty("MIN_SDK_VERSION").toInteger()
SUPPORT_LIB_VERSION=p.getProperty("SUPPORT_LIB_VERSION")
//keystore property
STORE_FILE_PATH=p.getProperty("STORE_FILE_PATH")
STORE_PASSWORD=p.getProperty("STORE_PASSWORD")
KEY_ALIAS=codeignis=p.getProperty("KEY_ALIAS")
KEY_PASSWORD=p.getProperty("KEY_PASSWORD")
//app property
VERSION_NAME=p.getProperty("VERSION_NAME")
VERSION_CODE=p.getProperty("VERSION_CODE")

}

使用到APP 下面的build.gradle里面

android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
applicationId "com.wuxiaolong.gradle4android"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 1
versionName "1.0"
}

通过try catch 的方式解决了本地local.propeties文件在不存在或者失败的情况下,读取本地的gradle。peoperties文件保证程序能正常运行。

使用的基本注意事项

  • 在本地配置好local.properties 和 gradle.properties这两个相关的文件。
  • 编译时尽量编译环境和其他人的环境一致。