Android使用脚本多渠道打包

我的博客原文:http://www.windhike.cn/2016/09/20/channel/

本文对 https://github.com/pengjianbo/MutiChannelPackup
Python脚本,对脚本作了扩展:
- 支持命令行参数,支持多flavor渠道打包
- 路径优化,支持配置多个flavor,多个flavor对应相同或不同的渠道
- 简化调用方式
- 支持渠道号与文件命名不一样,渠道号有对应的文件名字
- 代码在Python3.x下工作(原脚本2.x)
对不会Python的同学使用更加亲和。

早期使用Eclipse开发Android的同学想必对多渠道打包的痛苦还记忆犹新, 好在使用Android Studio后这一切变得简单起来(虽然还是很慢)。如果仅仅是几个渠道,使用gradle配置已经非常方便了。
设想这样一种场景:应用要在各大市场上线(20个起码),还有特别定制的(对企业个别页面和资源定制)也要在各大市场上线(20个起码),这样30到40个包打出来30分钟左右(我8G内存的PC),给点耐心估计也能忍,如果遇上司机或者发现bug重新打包,还能忍(有摔电脑的冲动)?

本文思路为META-INF渠道识别,你可以接着往下看,或者更详细请查看美团team博客点击查看

至于为什么选用Python脚本,本人试了下,感觉Python最方便,而且作为一个Python爱好者,知道了META-INF渠道识别的原理,需要作的知识文件操作而已,很修改原脚本。

META-INF渠道识别机制

我们普通apk打完包解压后是这样的结构:
apkmeta
主要在META-INF里面作文章,在META-INF里面添加文件不需要重新签名,步骤大概这样:
- 把渠道号以文件名的方式(带前缀方便读取)通过脚本写入到这个文件夹
- 在android代码中读取带约定前缀的文件的渠道号,设置渠道号

打包完后META-INF文件夹这样:
META-INF
10004就是后面要设置的渠道号

使用方式
调用

先说调用方式,简单配置后(只需要generator.py,info.conf两个文件),AS打出我们要设置渠道的所有Flavor包,命令行调用:

python generator.py [flavor] [flavor]..

cmdflavor
这里就在apk_normal文件夹下生成了我的17个渠道包
flavor为可选,不填写生成默认的,要同时生成多个flavor的渠道包可以这样:

python generator.py normal dianxin

配置(info.conf)

我的配置:

[Meta]

apk.path = ./aa.apk

dianxin_path = ../app/build/outputs/apk/dianxin_V2.3.1.apk

normal_path = ../app/build/outputs/apk/normal_V2.3.1.apk

channel_prefix = channel-

[dianxin]

google=20001

hiapk=20002

[normal]

hiapk=10001

360cn=10002

我这里是电信和normal两个flavor 程序表现有些不一样,分别打渠道包,我的脚本在根目录下建了个文件夹,放在里面,可以随便放,修改路径即可,有问题可以在下方留言。

python代码和我的配置 github地址,如果觉得有帮助就给个star吧

以上,祝编程愉快 :)

感谢阅读此文章,如果此文章对你有用或者你有任何疑问和意见,请在下方留言或者在github上fork我,你的鼓励对我有非凡的意义。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值