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:

<meta-data    
    android:name="com.baidu.lbsapi.API_KEY"    
    android:value="baiDuMapKey"  />

这里就可以不用转义符了,具体原因不知道,但是我在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
}

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,491评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,081评论 6 342
  • 青春岁月总是关联着和爱相关的那些过往,爱的故事在我的人生轨迹中看似并没有那么浓墨重彩的一笔,从未有过所谓的...
    冯子秦阅读 1,163评论 0 0
  • 1、Count函数:计数,但只能对数字计数eg:=COUNT(F:F) 2、Countif:Countif(ran...
    Jiang锋时刻阅读 10,932评论 0 10
  • 端午节假期的最后一个下午,老公同事乔迁之喜请客吃饭,邀请我们一家三口,我没多想,日常穿着赤裸着脸地就去了。不一会儿...
    冰下的梦_58132阅读 1,924评论 0 0