我们开发一个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文件,注意是图中选中的这个,而不是底部的那个:
打开之后,在这个配置文件中添加下面这两段代码,举例如下图: productFlavors {
渠道名称 {}
}

productFlavors.all {
flavor -> flavor.manifestPlaceholders = [清单文件中的meta-data设置的value名称: name]
}

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里面加的渠道:
打包完成后,工程中会出现如下图所示的两个Apk:
5.最后,检验运行,查看图片显示,到这里,我们的多渠道打包就算实现了。左边是小米的(有logo),右边是应用宝的(没有logo):

更多相关文章

  1. [置顶] 我的Android进阶之旅------>Android基于HTTP协议的多线程
  2. 【Android学习总结】之eclipse工程目录结构说明及使用
  3. No suitable java found.In order to properly use the android
  4. Android(安卓)Studio编译C++代码——Release与Debug版本的记录
  5. Android工程中R类访问不到工程中的资源文件的解决方法
  6. Git的忽略文件的语法规则
  7. Android(安卓)兼容Android(安卓)7拍摄照片/打开相册/选择照片/剪
  8. Android(安卓)合并AAR踩坑之旅
  9. Android将so库封装到jar包中并加载其中的so库

随机推荐

  1. Android(安卓)Training学习笔记之开始篇
  2. Android(安卓)9.0 cmds
  3. 学了一年的Android,还不会调试?你白学了!
  4. android 敏捷开发系列(一)——《啥是敏捷开
  5. android 自动化测试工具 Monkey
  6. [基础知识]全面认识AndroidManifest.xml
  7. 关于android中使用new Message的内存泄露
  8. android重要包的描述
  9. android动态创建控件
  10. Android近期任务列表 Recent Applicatoin