我有一个具有多种样式的Android应用,每种样式在其自己的strings.xml文件中定义app_name字符串。最近,我合并了一个新库,该库在其自己的strings.xml文件中为app_name定义了自己的值。问题是合并资源中app_name的最终值是库定义的app_name值。如何将风味app_name值赋予优先级?
当前,我在每种口味的单个strings.xml文件中为app_name定义特定值。
我希望app_name值是风味值,而不是库值。
更新: 我的口味定义如下:
productFlavors {
doctoronline {
dimension "client"
applicationId 'com.doctoronline.doctoronline'
resValue 'string', 'filebrowser_provider', 'com.doctoronline.doctoronline.aditya.fileprovider'
buildConfigField 'String', 'CORPORATE_DOMAIN', '"e4c4aa0f523941d2a332d15101f12e9e"'
buildConfigField 'String', 'SHORT_NAME', '"DRONLINE"'
buildConfigField 'String', 'WAITING_MESSAGE', '"DRONLINE_WAITING_MESSAGE_PATIENT_DEFAULT"'
}
mapfre {
dimension "client"
applicationId 'com.doctoronline.mapfre'
resValue 'string', 'filebrowser_provider', 'com.doctoronline.mapfre.aditya.fileprovider'
buildConfigField 'String', 'CORPORATE_DOMAIN', '"3282a15f144e288bac4c07b1598e9234"'
buildConfigField 'String', 'SHORT_NAME', '"mapfre"'
buildConfigField 'String', 'WAITING_MESSAGE', '"MAPFRE_WAITING_MESSAGE_PATIENT_DEFAULT"'
}
...
//4 or 5 extra flavors
}
我要添加的库是this。
答案 0 :(得分:2)
如果您要根据自己构建的产品风味来更改应用名称,则有两种选择:
1.使用resValue。这可以帮助您向应用程序中添加一些资源,例如字符串资源,颜色资源。
2。使用manifestPlaceHolder。这可以帮助您从build.gradle文件向Android清单文件添加变量,并通过构建类型或产品口味来更改这些变量。
这是将resValue添加到产品风味中的方法
productFlavors {
flavor1 {
dimension = 'test'
resValue("string", "app_name", "MY APP NAME")
}
flavor2 {
dimension = 'test'
resValue("string", "app_name", "MY APP NAME")
}
}
如果您的strings.xml具有名称为 app_name 的字符串,则必须将其删除,以免出现重复res值消息。
检查是否通过不同的产品口味更改了应用程序名称,从而改变了您的产品支持并构建了项目,然后检查清单文件中应用程序标记中显示的值。
第二种方法是使用manifestPlaceHolder。在您的产品风格中添加manifestPlaceHolder,然后在清单文件中的应用程序标记内使用此变量
productFlavors {
flavor1 {
dimension = 'test'
manifestPlaceholders=[appName: 'MY APP NAME']
}
flavor2 {
dimension = 'test'
manifestPlaceholders=[appName: 'MY APP NAME']
}
}
然后导航到您的android清单文件
<application
android:name=".DemoApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="${appName}"
android:supportsRtl="true"
android:theme="@style/AppTheme">
...
</application>
希望这个答案会有所帮助。编码愉快。