記一次接入小米推送的配置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"
}
//測(cè)試固定Ip
// offline_test{}
// offline_mini_test {}
}
如果要用AS打多包名的apk,這種需求一般是建立在不同渠道或者不同buildType的時(shí)候產(chǎn)生的需求痢士。
可以通過配置applicationId = “” 的方式配置不同的appId陷寝。
有個(gè)疑問,為什么修改applicationId即可修改包名呢窿冯?applicationID和packagename到底是什么關(guān)系? 實(shí)際上, package 代表了 java 代碼中的包名确徙。 applicationId 代表了應(yīng)用中的唯一標(biāo)識(shí)醒串。和應(yīng)用簽名一起用來區(qū)別和其他應(yīng)用不同。我想這也就是為什么 Google 市場(chǎng)能夠允許相同應(yīng)用不同 applicationId 的原因鄙皇。
這里還有個(gè)問題芜赌,還可以通過配置applicationIdSuffix “” 配置appId的后綴名,這樣需求可能就是要接入第三方sdk的時(shí)候伴逸,配置key的時(shí)候缠沈,有些平臺(tái)需要在debug的時(shí)候有特殊要求。還有個(gè)好處是有些產(chǎn)品需要有alpha违柏、beta博烂、debug、release各種奇奇怪怪的版本漱竖。
還有一個(gè)就是
resValue("string", "MiPush_AppId", "2882xxxx788")
resValue("string", "MiPush_AppKey", "591xxx42788")
這種方式執(zhí)行完,gradle build之后會(huì)再
目錄下生成一個(gè)generated.xml文件畜伐,內(nèi)容是
<?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配置自動(dòng)生成string信息,并且可以通過R.string.MiPush_AppId 的方式訪問到玛界。
再說下translatable=“false”是什么意思万矾,一般as新建一個(gè)工廠會(huì)有很多value-xx的文件,這個(gè)是為了做國(guó)際化處理的慎框。而我們這里手動(dòng)設(shè)置translatable=“false”就是告訴系統(tǒng)良狈,不要把這個(gè)string國(guó)際化處理。