版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wode_dream/article/details/53783335
文章通过两种方式标记渠道:
1、修改strings.xml中的字段;
2、修改AndroidManifest.xml中<meta-data>的值;
三个步骤:
1、在strings.xml中的<string name="channel_flag">influx</string>(用gradle打包时要注释掉这句)和
AndroidManifest.xml中的<meta-data android:value="${FLAG_VARIOUS_CHANNEL}" android:name="FLAG_CHANNEL"/>
;
2、在app module的build.gradle中添加脚本修改channel_flag跟FLAG_CHANNEL。
build.gradle中的代码
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "com.xxxxxxx.xxxxx"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
manifestPlaceholders=[FLAG_VARIOUS_CHANNEL:"influx"]
}
signingConfigs{
myConfig{
storeFile file("./xxxx.jks")
storePassword "xxxx"
keyAlias "influx"
keyPassword "influx"
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.myConfig
/**
* 把app-xiaomi-release.apk改成xiaomi.apk
*/
applicationVariants.all{
variant->variant.outputs.each{ output->
def outFile=output.outputFile
if(outFile!=null && outFile.name.endsWith(".apk")){
def fileName="${variant.productFlavors[0].name}"+".apk"
output.outputFile=new File(outFile.parent,fileName)
}
}
}
}
}
productFlavors{
xiaomi{
//一般写法
// manifestPlaceholders=[FLAG_VARIOUS_CHANNEL:"xiaomi"]
//更改strings.xml中的channel_flag为"xiaomi"
resValue("string","channel_flag","xiaomi") //这里是关键
}
baidu{
// manifestPlaceholders=[FLAG_VARIOUS_CHANNEL:"baidu"]
resValue("string","channel_flag","baidu")
}
yingyongbao{
// manifestPlaceholders=[FLAG_VARIOUS_CHANNEL:"yingyongbao"]
}
//根据功能点打包,[生成的apk,包名后会追加"okhttp",但是代码中或得到的包名不变]
okhttp{
applicationIdSuffix "okhttp"
resValue("string","app_name","okhttp")
}
}
productFlavors.all{
flavor->flavor.manifestPlaceholders=[FLAG_VARIOUS_CHANNEL:name]
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:recyclerview-v7:23.4.0'
testCompile 'junit:junit:4.12'
}
./gradlew assembleRelease
./gradlew assembleDebug