当前位置:   article > 正文

Build 动态修改 AndroidManifest 相关配置_manifest动态配置包名

manifest动态配置包名
 
使用场景:
当我们需要引用三方平台(例如:极光推送)的时候,我们需要在AndroidManifest多处配置当前应用的包名,如果想要更换包名,
我们就需要在对应的地方作出相关修改,如果频繁操作,很容易出错,也比较麻烦,此时我们就可以用相关变量作占位,
然后在build.gradle中作出相关设置,这样就可以只用修改一处即可。如图:
 

 
 

 
相关代码:
 
  1. productFlavors {
  2. //测试
  3. "要修改的值" {}
  4. }
  5. //替换AndroidManifest.xml的pkgNmae字符串为渠道名称
  6. android.applicationVariants.all { variant ->
  7. variant.outputs[0].processManifest.doLast {
  8. //之前这里用的copy{},我换成了文件操作,这样可以在v1.11版本正常运行,并保持文件夹整洁
  9. //${buildDir}是指build文件夹
  10. //${variant.dirName}是flavor/buildtype,例如GooglePlay/release,运行时会自动生成
  11. //下面的路径是类似这样:build/manifests/GooglePlay/release/AndroidManifest.xml
  12. def manifestFile = "${buildDir}/intermediates/manifests/full/${variant.outputs[0].dirName}/AndroidManifest.xml"
  13. //将字符串default替换成flavor的名字
  14. def updatedContent = new File(manifestFile).getText('UTF-8').replaceAll("pkgNmae", "${variant.productFlavors[0].name}")
  15. new File(manifestFile).write(updatedContent, 'UTF-8')
  16. //将此次flavor的AndroidManifest.xml文件指定为我们修改过的这个文件
  17. variant.outputs[0].processResources.manifestFile = file("${buildDir}/intermediates/manifests/full/${variant.outputs[0].dirName}/AndroidManifest.xml")
  18. }
  19. }


重新编译后可在输出目录直接查看AndroidManifest里面的相关值,如图:
 

 
 

                
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/265430
推荐阅读
相关标签
  

闽ICP备14008679号