gradle差异环境协同开发

全局配置的两种方式

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这两个相关的文件。
  • 编译时尽量编译环境和其他人的环境一致。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值