在开发中我们有时候会遇到一些需求,比如在不同应用市场图标不同,这个问题可以通过配置多渠道打包来实现,同时多渠道打包还可以实现app差异性,比如每个渠道内容不同,界面不同,以此延申可以通过渠道包实现pad版和phone版,或者两个app有一些共性东西,可以在一个项目中开发
- 首先在AndroidManifest.xml中配置
<meta-data
android:name="CHANNEL_ID"
android:value="${CHANNEL_ID}"/>
productFlavors {
huawei {}
xiaomi {}
yingyongbao {}
productFlavors.all {
flavor -> flavor.manifestPlaceholders = [CHANNEL_ID: name]
}
}
- 特别说明因为Android Studio3.0以后要求必须要保证所有的flavor 都属于同一个维度在下面代码块添加 flavorDimensions "default"
defaultConfig {
versionCode 1
versionName "1.0"
flavorDimensions "default"
}
- 到这里就配置好了,重点终于来啦,下图的huawei目录下就可以做一些差异化了,如果要替换图标就在res目录下替换对应的图标,如果要更改逻辑则需要在huawei下面新建和main下一样的java目录
public String getFlavorChannel(Context context) {
try {
PackageManager pm = context.getPackageManager();
ApplicationInfo appInfo = pm.getApplicationInfo(context.getPackageName(), PackageManager.GET_META_DATA);
return appInfo.metaData.getString("CHANNEL_ID");
} catch (PackageManager.NameNotFoundException ignored) {
}
return "";
}