| | 1 | '''现在统一使用新的多渠道打包方式,主要为了提高打包效率和方便打多渠道加固包。''' |
| | 2 | |
| | 3 | '''旧多渠道打包方式:''' |
| | 4 | 使用gradle 脚本重复编译,并在编译前替换项目配置文件中的魔方渠道字段: |
| | 5 | productFlavors { |
| | 6 | markets.each { |
| | 7 | name -> "$name" {} |
| | 8 | } |
| | 9 | //分渠道打包 正式打包时候奖 maniFest中 MOFANG_CHANNEL 的 value 改为 ${MOFANG_CHANNEL_VALUE} |
| | 10 | productFlavors.all { flavor -> |
| | 11 | flavor.manifestPlaceholders = [MOFANG_CHANNEL_VALUE: name] |
| | 12 | } |
| | 13 | } |
| | 14 | 此方法重复编译导致打100个渠道需要几小时,并且对于不支持多渠道打包的加固平台(腾讯御安全)耗时更高。 |
| | 15 | |
| | 16 | '''新多渠道打包方式:''' |
| | 17 | 利用的是Zip文件“可以添加comment(摘要)”的数据结构特点,在文件的末尾写入任意数据,而不用重新解压zip文件(apk文件就是zip文件格式); |
| | 18 | 所以该工具不需要对apk文件解压缩和重新签名即可完成多渠道自动打包,高效速度快,无兼容性问题; |
| | 19 | 5M的apk,1秒种能打300个 |
| | 20 | |
| | 21 | 具体原理: |
| | 22 | 1. 生成签名apk |
| | 23 | 2. 把渠道号、版本号、唯一码(验证)、渠道号长度、版本号长度逐一转为小端序byte编码。 |