我希望显示基于免费和专业版的不同应用名称。
我在build.gradle中定义buildConfigField "String", "AppName", "\"Message Cleanup\""
,但我不知道如何在AndroidManifest.xml中应用android:label。
的AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="info.dodata.messagecleanup" >
<application
android:allowBackup="true"
android:icon="@mipmap/clenupmessage"
android:label="AppName"
android:theme="@style/AppTheme" >
<activity android:name="ui.CleanupDelete"
android:label="AppName">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
的build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "info.dodata.messagecleanup"
minSdkVersion 9
targetSdkVersion 22
versionCode 7
versionName "1.07"
archivesBaseName = "MessageCleanup-V" + versionName
}
productFlavors {
free {
applicationId "info.dodata.messagecleanup"
buildConfigField "String", "AppName", "\"Message Cleanup\""
}
pro {
applicationId "info.dodata.messagecleanup.pro"
buildConfigField "String", "AppName", "\"Message Cleanup Pro\""
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.1.1'
compile 'com.google.android.gms:play-services:7.3.0'
}
致kcoppock
manifestPlaceholders可以做到这一点。
productFlavors {
wandoujia {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
}
baidu {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "New"]
}
c360 {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "c360"]
}
uc {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "uc"]
}
}
在AndroidManifest.xml中,我可以将它用作以下代码
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
答案 0 :(得分:2)
假设您使用的是标准项目结构(例如,您有src/main/res/values/strings.xml
之类的内容),请为每种风格创建其他目录:
src/free/res/values/strings.xml
src/pro/res/values/strings.xml
并在这两个文件中定义相同的字符串键(例如app_name
),并为每个变体指定正确的值。所以你有类似的东西:
<强>的src /免费/ RES /值/ strings.xml中强>
<string name="app_name">Message Cleanup</string>
<强>的src /亲/ RES /值/ strings.xml中强>
<string name="app_name">Message Cleanup Pro</string>
资源合并将根据正在构建的变体在这些字符串中合并。现在您可以在代码中引用app_name
字符串,并知道它将根据当前构建的风格正确呈现。