Android打包那些事---多渠道打包
来源:互联网 发布:mac如何把桌面的图标 编辑:程序博客网 时间:2024/04/30 10:45
为什么要分渠道打包
渠道打包的目的是为了针对不同的市场,做一些统计,数据分析。来看下Umeng统计是怎么说的。
友盟帮助移动应用开发商统计和分析流量来源、内容使用、用户属性和行为数据,以便开发商利用数据进行产品、运营、推广策略的决策。
接着,再来看看百度移动统计。
如何多渠道打包
接下来介绍2中多渠道打包的方法。
- Android Studio多渠道打包方法。
以Umeng统计为例,具体怎么集成就不说了,看Umeng官方文档。Umeng
在配置文件中配置
<meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_VALUE}"/>
注意:该配置和4大组件同级。
接着,在gradle脚本中添加如下代码。
productFlavors { baidu { } wandoujia { } xiaomi { } } productFlavors.all { flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] }
注意flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name],这里的要和配置文件中的value一致。一般来说,这样就可以了。Build->generate signed apk,等待便可生成签名的渠道包。生成的渠道包在build->outputs->apk目录下。或者,我们也可以在AS自带的 Terminal中,./gradlew assembleRelease(MAC版命令) 生成渠道包。或者,我们还可以右侧Gradle->Tasks->build下生成对应的渠道包。(ps:这是没签名的)。如图
。我们来看看生成的包吧。在这里我并没有签名。
。
呀,名字看起来很长啊,有办法变得明显一点么。答案是有的。在gradle脚本的buildTypes下添加如下代码。
applicationVariants.all { variant -> variant.outputs.each { output -> def outputFile = output.outputFile if (outputFile != null && outputFile.name.endsWith('.apk')) { // 输出apk名称为boohee_v1.0_2015-01-15_wandoujia.apk def fileName = "${variant.productFlavors[0].name}.apk" output.outputFile = new File(outputFile.parent, fileName) } } }
上面的代码将apk文件重命名为渠道包名称。
接下来在代码中通过
String channel=AppUtil.getMetaValue(this,"CHANNEL_NAME");
来获取渠道名。
额,多的不多说了,这个不是重点,感兴趣的去看这2位大神。我的这些东西是模仿他们的。
stormzhang
Android弟
上面的多渠道打包方法每生成一个渠道包都要重新打包,可想而知,当渠道多的飞起的时候,这种方案也会慢的飞起。那么,就来介绍另一种方案。
美团Android自动化之旅,
那篇文章介绍了原理,这里我再简单的说下。就是在META-INF文件夹下,插入一个代表渠道的空文件。然后在java带按摩中获取文件名来当做渠道名。
github地址
这个工具非常简单。只需要将apk文件放到PythonTool目录下。
在终端,
,
即可生成。好了,你们也快去试试吧。
参考:
- Github
- 美团Android自动化之旅
- stormzhang
- Android弟
- Android打包那些事---多渠道打包
- Android--多渠道打包那些事儿
- Android多渠道打包(一):基础多渠道打包
- Android多渠道打包(四):360多渠道打包
- Android多渠道打包(五):360多渠道打包+
- Android打包那些事
- android 多渠道自动打包
- android apk多渠道打包
- Android多渠道打包APK
- android 多渠道打包
- Android 多渠道自动打包
- android应用多渠道打包
- Android Ant 多渠道打包
- Android多渠道Ant打包
- android多渠道打包
- Android多渠道打包工具
- android ant 多渠道打包
- Android studio 多渠道打包
- TortoiseSVN中分支和合并实践
- Android Studio中的assets目录怎么创建?
- zzulioj 1781: 和尚特烦恼7——念经 (字符串)
- servlet监听器
- B Tree
- Android打包那些事---多渠道打包
- 02.SpringMVC传值【孔浩SpringMVC视频教程】学习笔记
- UML9种图
- telnet访问web服务器
- C++中typedef的用法
- mac系统使用lookup file.vim的问题
- 行业危机
- Android 实现滑动的几种方法(三)scrollTo 与 scrollBy
- 最短路径-弗洛伊德算法