赞
踩
占位符,其实是一个可以被替换的临时标记,比如${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"
这样再次编译就好了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。