gradle 动态配置manifest

在app开发过程中,我们难免会遇到一些三方sdk,他们都有着各自的key,每次打包时都要去更换这些key的正式环境和测试环境,小手一抖搞不好就换错了(万一忘了呢0.0),这里就是叫你如何通过配置,用最少的改动完成环境的切换

manifest中key的配置

    
    
    

这里分别是友盟、极光、融云的key的配置
那么我们该怎么配置 才能让他获取到正确的值呢?
1、在根目录下创建一个.properties文件(文件名无所谓,你喜欢就好),也可以用现有的

2、在目标文件内创建key.type=value的键值对,如下:
#融云key

       rongcloudappkey.dev=123456
       rongcloudappkey.test=123456
       123456对应的是你相应的keyString字符串

3、在build.gradle中配置 这里为了方便 直接贴一份代码了:

 Properties properties = new Properties()
 properties.load(project.rootProject.file('你自己的文件.properties').newDataInputStream())
//dev 即你在.properties设置的key.type=value中的type
 String pack = properties.getProperty("pack", "dev")

ext{
PUBLISH_VERSION = '2.5.6.170330_qa'
PUBLISH_VERSION_CODE = 241
}
android {
  compileSdkVersion 23
  buildToolsVersion '23.0.3'
  defaultConfig {
    versionCode PUBLISH_VERSION_CODE
    versionName PUBLISH_VERSION
    //配置信息
    //这里就是获取你在.properties文件中设置的key.type=value中的value的值
    //在manifest中的使用方式参照上方 注意格式
    manifestPlaceholders =[
    RONG_CLOUD_APP_KEY_VALUE: properties.getProperty("rongcloudappkey." + pack),
             JPUSH_KEY_VALUE         : properties.getProperty("jpushkey." + pack),
             UMENG_KEY_VALUE         : properties.getProperty("umengkey." + pack)
            ]
  }
}

代码中的配置

代码中最常见的就是baseUrl的切换,同样的我们也是可以在gradle中配置的
具体流程如下:
1、同manifest中的1,可以使用同一个文件
2、在目标文件内创建key.type=value的键值对,如下:

       #url 
       serverurl.dev=\"123456\"
       serverurl.test=\"123456\"
       //123456对应的是你相应的key的String字符串
       //注意:格式和在manifest的配置不一样的哟

3、在gradle中配置 直接贴代码:

buildConfigField "String", "SERVER_URL", properties.getProperty("serverurl." + pack)
这里的pack就是配置manifest时的pack
4、使用时直接调用:BuildConfig.SERVER_URL即可,记得rebuild或clean一下哟

切换环境

当我们配置好上面的一切后,如果我们要切换环境 只需要在这里把type改成你预先设置的即可

     //dev 即你在.properties设置的key.type=value中的type
     //修改type即可切换环境
     String pack = properties.getProperty("pack", "dev")

你可能感兴趣的:(android,gradle)