记一次接入小米推送的配置gradle文件管中窥豹
buildTypes {
release {
minifyEnabled true
proguardFile getDefaultProguardFile('proguard-android.txt')
proguardFile 'proguard-project.txt'
signingConfig signingConfigs.release
resValue("string" , "MiPush_AppId","2882xxxxxxx679")
resValue("string" , "MiPush_AppKey","594xxxxx679")
manifestPlaceholders = [nim_key : 'f7379xxxxxx31f19c20']
}
debug {
// 如果要求debug的app使用正式签名,可以打开下面配置
signingConfig signingConfigs.release
applicationIdSuffix ".debug"
resValue("string", "MiPush_AppId", "288xxxxx788")
resValue("string", "MiPush_AppKey", "591xxxx88")
manifestPlaceholders = [nim_key : 'a91axxxxxxcxxeb54']
}
}
productFlavors {
study_enterprise{
applicationId = "com.xiao.dong"
}
//测试固定Ip
// offline_test{}
// offline_mini_test {}
}
如果要用AS打多包名的apk,这种需求一般是建立在不同渠道或者不同buildType的时候产生的需求。
可以通过配置applicationId = “” 的方式配置不同的appId。
有个疑问,为什么修改applicationId即可修改包名呢?applicationID和packagename到底是什么关系? 实际上, package 代表了 java 代码中的包名。 applicationId 代表了应用中的唯一标识。和应用签名一起用来区别和其他应用不同。我想这也就是为什么 Google 市场能够允许相同应用不同 applicationId 的原因。
这里还有个问题,还可以通过配置applicationIdSuffix “” 配置appId的后缀名,这样需求可能就是要接入第三方sdk的时候,配置key的时候,有些平台需要在debug的时候有特殊要求。还有个好处是有些产品需要有alpha、beta、debug、release各种奇奇怪怪的版本。
还有一个就是
resValue("string", "MiPush_AppId", "2882xxxx788")
resValue("string", "MiPush_AppKey", "591xxx42788")
这种方式执行完,gradle build之后会再
目录下生成一个generated.xml文件,内容是
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Automatically generated file. DO NOT MODIFY -->
<!-- Values from build type: debug -->
<string name="MiPush_AppId" translatable="false">288xxxxx8</string>
<string name="MiPush_AppKey" translatable="false">59xxxx8</string>
</resources>
原来如此,这种方式就是通过gradle配置自动生成string信息,并且可以通过R.string.MiPush_AppId 的方式访问到。
再说下translatable=“false”是什么意思,一般as新建一个工厂会有很多value-xx的文件,这个是为了做国际化处理的。而我们这里手动设置translatable=“false”就是告诉系统,不要把这个string国际化处理。