Android项目gradle本地配置(一)

由于每次打包发布、run项目切换项目环境搞的整个人心烦气躁。在花费了数天时间研究gradle本地配置,终于不用再更换环境时手忙脚乱的改接口路径,各种各样的第三方key值。在此分享出来,供大家参考。

gradle本地变量保存

在Project 的gradle中可定义本地变量,代码如下:

allprojects {
    repositories {
        jcenter()
    }
}
ext {
    android = [
                 compileSdkVersion    : 23,
                 buildToolsVersion    : "23.0.0",
                 minSdkVersion        : 17,
                 targetSdkVersion     : 23,
                 supportLibraryVersion: "23.2.0",
    ]
    config = [       
              // service url
              serviceUrlDevelop  : "\" 你的开发接口路径 \"",        
              serviceUrl         : "\"  你的正式版接口路径 \"",        
              // baiDu push sdk key        
              baiDuPushKeyDevelop: "\"  你的开发版百度推送key \"" as String,       
              baiDuPushKey       : "\"  你的正式版百度推送key \"" as String,       
               // baiDu map sdk key        
              baiDuMapKeyDevelop : "  你的开发版百度地图key " as String,        
              baiDuMapKey        : "  你的正式版百度地图key " as String,        
              //label name        
              labelDevelop       : " AppName_develop " as String,        
              label              : " AppName " as String,
   ]

这里的 ext 是我定义的一个变量类,上面的allprojects 是告诉大家放在哪个里面,知道的这里可以忽视。
android 里面放的是大家熟悉的一些版本号之类的,下面代码块会用到。
config 里面放的是我的两个环境的配置参数,一个是开发环境,一个是正式环境。

这里遇到的坑

1.{}里面的属性用= ,属性和属性之间不要写逗号(,),例如:

ext {
    str = "aa" as String
    num = 0 as int
    android = []
    config = []
}

2.[] 里面用: ,属性和属性之间要写逗号(,),例如:

android = [ 
        compileSdkVersion : 23, 
        buildToolsVersion : "23.0.0", 
        minSdkVersion : 17, 
        targetSdkVersion : 23,
        supportLibraryVersion: "23.2.0",
 ]

3.大家看到我的config里面有些key加了转义符(""xxx""),有些每加是不是觉得很奇怪。没错,这是重点,大家拿好本子和笔记好了啊。一般来说我们的key值会在两个地方配置。
一个是java代码里面,比如说百度推送:

PushManager.startWork(getApplicationContext(),PushConstants.LOGIN_TYPE_API_KEY, "baiDuPushKey");

这里因为key是在java代码里面的,你在gradle配置好,编译后会生成在BuildConfig.java中生成对应的字段和值,如果你加转义符就会是这样的:

public static final String BAIDU_PUSH = "12223131313";

不加会是这样的:

public static final String BAIDU_PUSH = 12223131313;

立马就编译失败好伐,立马哭了好伐。。。
同理,另外一个是在AndroidManifest.xml里面配置(我只知道这俩,还有其他的告诉告诉我哈),比如百度地图的key:


这里就可以不用转义符了,具体原因不知道,但是我在gradle里面打印出来加了转义符的:

这是有转义符的:"111111111111"
这是没有转义符的:111111111111

反正加了转义符会多个双引号,这样key的效验就失败了。你懂得。

变量的用法

apply plugin: 'com.android.application'
//apply plugin: 'android-apt'
def androidConfig = rootProject.ext.android
def GWTConfig = rootProject.ext.config


android {   
     // 编译SDK的版本    
    compileSdkVersion androidConfig.compileSdkVersion   
    // build tools的版本    
    buildToolsVersion androidConfig.buildToolsVersion
}

这样就行了,今天先这样,明天好好理理下面该怎么写再说。

你可能感兴趣的:(Android项目gradle本地配置(一))