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

本文介绍如何使用占位符动态修改AndroidManifest文件的内容,重点讲解如何解决因ManifestMerger导致的编译错误,并提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

AndroidManifest清单文件

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.cjy.hhlc">

<application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher1"
        android:label="${appName}"
        android:roundIcon="@mipmap/ic_launcher1"
        android:supportsRtl="true"
        android:largeHeap="true"
        android:name="com.cjy.hhlc.base.BaseApplication"
        android:testOnly="false"
        android:resizeableActivity="true"
        android:theme="@style/AppTheme"
        tools:replace="label">

当前应用build.gradle文件

android {
    buildTypes {
        release {
            manifestPlaceholders.put("appName","应用名称正式版")
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.config
        }
        debug {
            manifestPlaceholders.put("appName","应用名称测试版")
            signingConfig signingConfigs.config
        }
    }
}

注意:

Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed : Attribute application@label value=(应用名称测试版) from AndroidManifest.xml:40:9-35
  	is also present at [:photopicker] AndroidManifest.xml:13:9-41 value=(@string/app_name).
  	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"

这样再次编译就好了




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值