AndroidManifest占位符(实现根据正式还是测试环境设置不同的app名称)
2018-03-26 12:10
761 查看
占位符,其实是一个可以被替换的临时标记,比如
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"
这样再次编译就好了
${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"
这样再次编译就好了
相关文章推荐
- 详解vue.js根据不同环境(正式、测试)打包到不同目录
- android studio的debug和release模式下使用不同的Http前缀进行测试与正式环境的自动切换
- android的HAL第二种调用hal方法中的APP 测试程序(属于APP层)代码的实现:
- Android实战技巧:用TextView实现Rich Text---在同一个TextView中设置不同的字体风格
- android实现界面左右滑动(GridView动态设置item,支持每个item按某个属性排序来显示在不同的界面)
- 批处理根据不同的系统设置环境变量
- 解读android源码APP之一 ---- 环境设置
- Android实战技巧:用TextView实现Rich Text---在同一个TextView中设置不同的字体风格
- Android实战技巧:用TextView实现Rich Text---在同一个TextView中设置不同的字体风格
- Android 搜索界面提示语 根据不同字的个数实现不规则的 弹幕效果 流式布局,热门标签
- Android打电话程序(根据添加按钮监听的3种不同方式分别实现)
- JS判断请求来自Android手机还是iPhone手机,根据不同的手机跳转到不同的链接。
- WebBrowser代理设置,可以根据IP,线程ID等设置代理,实现了多WebBrowser同时使用不同代理
- 【和小强学移动app测试1】android移动开发环境搭建与配置
- JS判断请求来自Android手机还是iPhone手机,根据不同的手机跳转到不同的链接。
- 【郭林专刊】Android实战技巧:用TextView实现Rich Text---在同一个TextView中设置不同的字体风格
- android学习----用xml文件设置ImageButton按下、弹起加载不同的图片 实现
- Android实战技巧:用TextView实现Rich Text---在同一个TextView中设置不同的字体风格
- Android实战技巧:用TextView实现Rich Text---在同一个TextView中设置不同的字体风格
- MVC扩展控制器工厂,通过实现IControllerFactory,根据action名称生成不同的Controller