当前位置:   article > 正文

AndroidManifest占位符(实现根据正式还是测试环境设置不同的app名称)_manifest根据环境取不同值

manifest根据环境取不同值

占位符,其实是一个可以被替换的临时标记,比如${name},我们就可以使用真实的name变量的值替换这个占位符,达到可以动态的修改这个占位符的目的。所以AndroidManifest文件的占位符,其实是帮助我们动态修改AndroidManifest文件里的内容

AndroidManifest清单文件

  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. package="com.cjy.hhlc">
  4. <application
  5. android:allowBackup="true"
  6. android:icon="@mipmap/ic_launcher1"
  7. android:label="${appName}"
  8. android:roundIcon="@mipmap/ic_launcher1"
  9. android:supportsRtl="true"
  10. android:largeHeap="true"
  11. android:name="com.cjy.hhlc.base.BaseApplication"
  12. android:testOnly="false"
  13. android:resizeableActivity="true"
  14. android:theme="@style/AppTheme"
  15. tools:replace="label">

当前应用build.gradle文件

  1. android {
  2. buildTypes {
  3. release {
  4. manifestPlaceholders.put("appName","应用名称正式版")
  5. minifyEnabled false
  6. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  7. signingConfig signingConfigs.config
  8. }
  9. debug {
  10. manifestPlaceholders.put("appName","应用名称测试版")
  11. signingConfig signingConfigs.config
  12. }
  13. }
  14. }

注意:

  1. Error:Execution failed for task ':app:processDebugManifest'.
  2. > Manifest merger failed : Attribute application@label value=(应用名称测试版) from AndroidManifest.xml:40:9-35
  3. is also present at [:photopicker] AndroidManifest.xml:13:9-41 value=(@string/app_name).
  4. Suggestion: add 'tools:replace="android:label"' to <application> element at AndroidManifest.xml:37:5-294:19 to override.

错误原因:AndroidStudio的Gradle插件默认会启用Manifest Merger Tool,若你导入的Library项目中也定义了与主项目相同的属性,则此时会合并失败,并报上面的错误。

解决办法:

在Manifest.xml文件里的application中加上tools:replace="label"

这样再次编译就好了




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

闽ICP备14008679号