您的位置:首页 > 移动开发 > Android开发

关于tinker 热修复的多渠道打包方式

2017-08-21 16:48 344 查看
上篇博客介绍了tinker 热修复的接入的问题[]http://blog.csdn.net/qq1221jyj/article/details/73743612]

当接入成功后,项目又做了多渠道的东西。难道要一个渠道对应一个补丁包吗?那哪哪哪 ~~简直开玩笑。绝对不行。这么做不符合一个程序员的身份啊。

tinker官方文档推荐用walle或者packer-ng-plugin来辅助打渠道包

因为walle 只支持v2 的签名方式打包。项目要兼容低版本,只能舍弃。最后只能用packer来做。最近packer最新版本2.0.0 也开始只支持v2 签名

。还好有1.0.9可以用

接下来开始一步步讲解。怎么用packer来打渠道包。(用这种方式打包,不但可以热修复只打一个补丁包以外,打渠道包速度还大幅度提升,打渠道包时间过长的兄弟,也要看过来啊)

准备工作:

1 使用packer 的环境 Mac 安装2.x版本的python(windows兄弟就要自己在配置其他环境了)

2 项目中需要在gradle中配置多渠道信息的逻辑, 都要放到java文件中设置。比如友盟的 设置渠道信息

MobclickAgent.startWithConfigure(newMobclickAgent.UMAnalyticsConfig(mContext, Config.UMENG_KEY, CHANNEL));

等之类的操作。

3 先到官网下载samlpe。找到文件夹下的tools文件夹。将里面的python文件放到一个方便操作的目录下。我是放到桌面,新建文件夹fastmakeapp

方便操作。

4 将渠道信息提前写到txt文件里面。在这要注意下,渠道信息

5 打出一个不到任何渠道信息的基础包 base.apk

接下来就可以愉快的使用packer给base.apk添加渠道信息了。

一 打开mac终端 将工作路径切换到packer的打包工具目录下,我是放到fastmakeapp文件夹下的。尽量把 base.apk 和打包工具PackerNg-1.0.9.py 放到同级目录,方便下面的操作。

二 在终端输入python PackerNg-1.0.9.py base.apk channel.txt okapp 命令。 切记 开头一定要有python 否则无法识别该命令。当初就因为这个,卡住我好几天。尴尬尴尬。 PackerNg-1.0.9.py 是打包工具的核心文件。 base.apk是基础包。 channel.txt 渠道信息文件。okapp 是存放打出来渠道包的文件夹。

经过上面的几步操作。渠道包基本就可以打出来了。

后记遇到的问题:

1


上图左右两边看上去是不是一毛一样。但是打包时候用左边的就会报错,包名过长。用右边就没问题。为啥呢!!!!!原因(右边是我手打进去的,打一个渠道信息敲一下回车。左边是我从excel直接复制进去的。文件转成16进制就会发现问题了 回车是\r 换行是\n 打包工具只能识别 \r ) 这点要注意了。 要是有python基础的同学或许更容易发现这个问题。在此要感谢后台同事提醒啦

使用该工具目前只遇到了这两个问题(字体加粗)。

老规矩,以后使用过程中遇到问题 ,博客继续更新。有问题的同学评论留言,我看到会及时帮大家解决问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息