您的位置:首页 > 移动开发 > Android开发

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

2018-03-26 12:10 761 查看
占位符,其实是一个可以被替换的临时标记,比如
${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"

这样再次编译就好了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐