有时候项目在不同渠道下要使用不同的应用图标和应用名,每次手动替换费时费力,可以在gradle中配置,一步到位
buildTypes {
debug {
manifestPlaceholders = [app_name: "@string/app_name", app_icon: "@mipmap/icon_logo"]
}
release {
zipAlignEnabled true
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
applicationVariants.all { variant ->
variant.outputs.each { output ->
def flavorFlag = "${variant.productFlavors.get(0).name}"
if (flavorFlag == "qh360Store") {
manifestPlaceholders = [app_name: "@string/app_name_360", app_icon: "@mipmap/icon_logo_360"]
} else {
manifestPlaceholders = [app_name: "@string/app_name", app_icon: "@mipmap/icon_logo"]
}
}
}
}
}
如代码所示,我判断是360渠道的时候,采用了app_name_360,icon_logo_360的资源
然后在清单文件中配置一下
<application
android:name="com.mine.test.application.MyApplication"
android:allowBackup="true"
android:icon="${app_icon}"
android:label="${app_name}"
android:supportsRtl="true"
android:theme="@style/AppTheme">
app_icon和app_name与gradle中的要一致
我再搜寻相关文章的时候发现他们说在buildTypes,productFlavors,defaultConfig都可以进行配置,优先度是递降的,但是在使用过程中,必须在buildTypes中进行配置,否则项目无法构建成功,所以依我来看,只能在buildTypes中进行渠道区分图标和应用名,如有说错的地方,请指正。
指正:在defaultConfig中可以进行统一配置,上述方法的准确性有待验证,最好在渠道中单独配置