根据情况替换 Manifest.xml
中的值
android
中有很多个渠道,每个渠道都有 debug
和 release
版本, 如果Manifest.xml
中每个版本有不同的值
一般的可以用 manifestPlaceholders = [APP_KEY : '对应的值']
来替换,在 debug
和 release
的时候也可以,但是多渠道的时候可能就会有些问题了
解决方式
- 1、简单
两个渠道
flavorDimensions 'defaultDimension'
productFlavors {
alibaba { }
tencent { }
}
每个渠道的版本的不同的值
ext {
alibabaDebug = 'alibabaDebug'
alibabaRelease = 'alibabaRelease'
tencentDebug = 'tencentDebug'
tencentRelease = 'tencentRelease'
}
替换值
afterEvaluate {
project.android.applicationVariants.all { variant ->
// 最简单的方法
variant.mergedFlavor.manifestPlaceholders = [APP_KEY: project."${variant.name}"]
}
}
2、自定义任务,和上面的其实差不多
两个渠道
flavorDimensions 'defaultDimension' productFlavors { alibaba { } tencent { } }
每个渠道的版本的不同的值
ext { alibabaDebug = 'alibabaDebug' alibabaRelease = 'alibabaRelease' tencentDebug = 'tencentDebug' tencentRelease = 'tencentRelease' }
替换值
afterEvaluate { project.android.applicationVariants.all { variant -> // 自定义任务 tasks.create("${variant.name}ManifestPlaceHolder", ManifestPlaceHolder) { current = variant } variant.outputs.first().processManifest.dependsOn "${variant.name}ManifestPlaceHolder" } } class ManifestPlaceHolder extends DefaultTask { @Input def current @TaskAction def changeManifestPlaceHolder() { current.mergedFlavor.manifestPlaceholders = [APP_KEY: project."${current.name}"] } }