Android Studio多渠道打包

来源:互联网 发布:sci论文 知乎 编辑:程序博客网 时间:2024/06/07 22:48

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 "";            }    }}
1 0
原创粉丝点击