Android Studio多渠道打包

我们开发一个APP在上传应用市场之前,有时候会遇到要根据不同平台打多个apk包的问题。由于Android的应用市场比较多,主流的应用市场就有应用宝,百度手机助手,豌豆荚等等,还不包括其他的。一个一个打包非常麻烦,但通常打多个包主要是因为有的应用市场平台对引导页有特殊要求,或者第二屏广告页要加上他们的logo(申请应用市场首发的时候)所以多渠道打包是必须要做的一个任务,今天我就来讲一下我学习和实现多渠道打包的过程。
1.首先新建一个小工程,并且新建一个类“TheSecondActivty(第二屏广告页)”和它的布局文件“activity_second”,然后打开清单文件,加上一个“meta-data”,如下图
<meta-data android:name="XIAOMI_GUIDANCE"
    android:value="${XIAOMI_GUIDANCE_VALUE}"/>
其中的“XIAO_GUIDANCE”就是我们后面要在代码中用来判断的一个依据,而“XIAO_GUIDANCE_VALUE”在下面的build.gradle文件中要用到。如果还有其他渠道的引导页要单独设定的话就新增一个类似的met-data即可;
2.打开app下面的build.gradle文件,注意是图中选中的这个,而不是底部的那个:
Android Studio多渠道打包
打开之后,在这个配置文件中添加下面这两段代码,举例如下图:
    productFlavors {
        渠道名称 {}
    }

    productFlavors.all {
        flavor -> flavor.manifestPlaceholders = [清单文件中的meta-data设置的value名称: name]
    }
Android Studio多渠道打包
3.打开第二屏广告页的类,通过ApplicationInfo获取到这个meta-data,通过判断meta-data是否包含“xiaomi”,这里的“xiaomi”也就对应上面的渠道名称,然后设置第二屏广告页的显示图片。具体代码如下,非常的简单:
try {
    ApplicationInfo appInfo = this.getPackageManager().getApplicationInfo(getPackageName(),
            PackageManager.GET_META_DATA);
    String reStr = appInfo.metaData.getString("XIAOMI_GUIDANCE");
    if(reStr.equals("xiaomi")) {
        rlBackground.setBackgroundResource(R.drawable.guidance_xiaomi);
    } else {
        rlBackground.setBackgroundResource(R.drawable.guidance);
    }
} catch (PackageManager.NameNotFoundException e) {
    e.printStackTrace();
}
4.代码写完之后就可以打包了,简单的打包过程我之前的博客有提到,所以这里就不说了,直接上图,如下图所示在Flavors一栏中出现了两个选项,也就是我们在build.gradle里面加的渠道:
Android Studio多渠道打包
打包完成后,工程中会出现如下图所示的两个Apk:
Android Studio多渠道打包
5.最后,检验运行,查看图片显示,到这里,我们的多渠道打包就算实现了。左边是小米的(有logo),右边是应用宝的(没有logo):
Android Studio多渠道打包                Android Studio多渠道打包