在app开发过程中,我们难免会遇到一些三方sdk,他们都有着各自的key,每次打包时都要去更换这些key的正式环境和测试环境,小手一抖搞不好就换错了(万一忘了呢0.0),这里就是叫你如何通过配置,用最少的改动完成环境的切换
manifest中key的配置
<meta-data
android:name="UMENG_APPKEY"
android:value="${UMENG_KEY_VALUE}" />
<meta-data
android:name="JPUSH_APPKEY"
android:value="${JPUSH_KEY_VALUE}" />
<meta-data
android:name="RONG_CLOUD_APP_KEY"
android:value="${RONG_CLOUD_APP_KEY_VALUE}" />
这里分别是友盟、极光、融云的key的配置
那么我们该怎么配置 才能让他获取到正确的值呢?
1、在根目录下创建一个.properties文件(文件名无所谓,你喜欢就好),也可以用现有的
2、在目标文件内创建key.type=value的键值对,如下:
#融云key
rongcloudappkey.dev=123456
rongcloudappkey.test=123456
123456对应的是你相应的key的String字符串
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")