原文转载于http://www.cnblogs.com/ct2011/p/4152323.html
作者Github地址是https://github.com/GavinCT/AndroidMultiChannelBuildTool
作者主要是根据美团网技术人员的思路写了一份快速打渠道包的代码,主要是做分享,因为本人目前也遇到多渠道打包,耗时耗力的工作。所以好东西要分享!
再次感谢美团技术,包括贡献资源的作者。
以下内容摘抄于作者Github
AndroidMultiChannelBuildTool
安卓多渠道打包工具。实现思路讲解: Android批量打包提速 - GavinCT
使用本工具,Android程序员仅需将ChannelUtil.java放入到工程里使用,以后打包的事情就不用自己动手了。
安装个Python环境,双击一下MultiChannelBuildTool.py,谁都可以打包了!
目录介绍及使用注意
PythonTool
Python2 与 Python3 都能正常使用
-
info目录下的channel用来存放渠道,多个渠道之间用换行隔开。
注意:
fork后通过Github clone,这个channel文件在Windows端是正常的,以换行隔开(\r\n
)。
直接点击右侧的download下载zip,可能你在windows端看到的就不是以换行隔开的(\n
)。
这是Github造成的。但不会影响程序最后的运行效果。
你可以粘贴下面的渠道到channel.txt中保持它在windows端的可读性。samsungapps hiapk anzhi 360cn xiaomi myapp 91com gfan appchina nduoa 3gcn mumayi 10086com wostore 189store lenovomm hicloud meizu baidu googleplay wandou
也可以自己来写入自己需要的市场,并以换行隔开
- MultiChannelBuildTool.py是多渠道打包的脚本。
JavaUtil
ChannelUtil.java 用来解析渠道,直接拷贝到Android工程中使用即可。
ChannelUtil中的getChannel方法可以方便的获取渠道。
常见问题答疑
这部分问题是由美团大神丁志虎在微博上答复的,摘录如下:
- 这个方案没法解决不同渠道使用渠道自己SDK的问题,友盟的SDK提供了在代码中设置渠道的方式,所以再获取到渠道号后再调用SDK相关设置渠道的方法就可以了
- apk用的是java那一套签名,放在META-INF文件夹里的文件原则上是不参与签名的。如果Google修改了apk的签名规则,这一套可能就不适用了。
我来解释下第一句话,因为之前我们做渠道统计的时候,比如友盟
<!-- 友盟统计 -->
<meta-data
android:name="UMENG_APPKEY"
android:value="4f069691121221" />
<meta-data
android:name="UMENG_CHANNEL"
android:value="uc" />
我们需要改变UMENG_CHANNEL的value值,现在这种打包方式本身是没有改变的。我们需要使用友盟的统计SDK在代码里进行改变,友盟是有此方法的。
http://bbs.umeng.com/thread-5335-1-8.html
我再截个图
所以, 如果你们公司内有自己的统计,那么就需要提供友盟这种代码内设置的方式了。
第二句话,我个人理解恰恰说明了此办法解决打包几百个apk耗时那么久的原因----apk签名。 本身没有签名,所以很快。
资源下载地址: http://download.youkuaiyun.com/detail/u013651247/8329409