Gradle使用技巧2——不同buildType使用不同applicationId

在工作中,有的时候会遇到比较奇葩的需求,就是线上环境和开发环境不能使用同一个applicationId,比如在使用推送的时候(小米推送),不同的KEY对应不同的applicationId,如果在注册的时候只使用同一个KEY,那么平时开发测试的时候很容易就导致消息发到了线上环境,这怎么办呢?
还能怎么办?在推送网站上申请两个账号呗,一个测试账号,一个正式账号。然后在初始化推送服务的时候可以根据 BuildConfig.DEBUG 来判断使用哪个KEY。但是包名怎么办呢?如果像以前使用eclipse开发,这个问题确实不太好弄,因为一般包名都是在AndroidMainfest里写的,牵一发而动全身啊!幸亏现在有了Gradle,applicationId和packageName区别开了。
在gradle配置文件里会设置applicationId属性,一般和包名一样,它是用来作为app的唯一标示,而AndroidMainfest里的packageName真的就只是包名了。这样在开发环境使用推送的时候就可以另外使用一个包名,比如com.XXX.test。
这样一来平时使用的applicationId就是com.XXX.test,在打包的时候 把test去掉就好了。
但是这样也比较麻烦,每次都要去改这个代码,万一忘了发的包就会有问题。能不能智能一点,debug的时候就是带test的,release的时候就不带呢?答案当然是可以!
废话不多说,直接上代码吧!
defaultConfig {
  applicationId "cn.ks.yun"
}
buildTypes {
  release {
    minifyEnabled true
    shrinkResources true
    proguardFile 'proguard-rules.pro'
}
  debug {
     applicationIdSuffix "test"
}
}

在debug里添加了一个applicationIdSuffix,给applicationId加后缀,这样就可以实现在release和debug中使用不同的applicationId了!

你可能感兴趣的:(Android)