Android(安卓)动态替换 Manifest.xml中的值
16lz
2021-01-24
根据情况替换 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}"] }}
更多相关文章
- Could not find SDK_Root\tools\adb.exe!
- Flex AIR应用拍照功能(Android和IOS版本)
- Android学习——AndroidX
- Android(安卓)Studio系列教程六--Gradle多渠道打包
- android两个子线程间通信
- zdz工具箱v1.5 android版本发布了,集成各种个人生活中常用的工具
- Android(安卓)项目多版本管理
- Android中ADT插件的安装
- 使用AndroidStudio生成打有系统签名的apk