1、 假设我需要分2个渠道:一个是国内的应用市场,一个是google play的, 需要在app module下的build.gradle里添加如下代码:
android {
...
productFlavors {
cooby {}
google {}
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [CY_CHANNEL_VALUE: name]
}
}
然后sync一下Gradle
2、在 AndroidManifest.xml 里添加渠道变量
<meta-data
android:name="CY_CHANNEL"
android:value="${CY_CHANNEL_VALUE}" />
//这样写就能够读取gradle中的[UMENG_CHANNEL_VALUE: name]的name的值了。
3、根据不同的渠道名做不同的处理,比如“google play要求你不能有其他方式来更新app(服务端更新)”,这时候:
String channelValue =AndroidUtils.getMetaData(this, "CY_CHANNEL");
//非谷歌渠道,才启用检查版本更新功能
if (!channelValue.equalsIgnoreCase("google")){
UpdateManager.getUpdateManager().checkAppUpdate(this,
Urls.getVersion4Android, false);
checkAppUpdate();
}
public class AndroidUtils{
public static String getMetaData(Context context, String name) {
try {
ApplicationInfo appInfo = context.getPackageManager().getApplicationInfo(context.getPackageName(),
PackageManager.GET_META_DATA);
return appInfo.metaData.getString(name);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
return "";
}
}
}