wiki:mcp_pconline

Version 3 (modified by luochengbin, 9 years ago) (diff)

--

现在统一使用新的多渠道打包方式,主要为了提高打包效率和方便打多渠道加固包。

旧多渠道打包方式:

使用gradle 脚本重复编译,并在编译前替换项目配置文件中的魔方渠道字段:

productFlavors {

markets.each {

name -> "$name" {}

} 分渠道打包 正式打包时候奖 maniFest中 MOFANG_CHANNEL 的 value 改为 ${MOFANG_CHANNEL_VALUE} productFlavors.all { flavor ->

flavor.manifestPlaceholders = [MOFANG_CHANNEL_VALUE: name]

}

}

此方法重复编译导致打100个渠道需要几小时,并且对于不支持多渠道打包的加固平台(腾讯御安全)耗时更高。

新多渠道打包方式:

利用的是Zip文件“可以添加comment(摘要)”的数据结构特点,在文件的末尾写入任意数据,而不用重新解压zip文件(apk文件就是zip文件格式);

所以该工具不需要对apk文件解压缩和重新签名即可完成多渠道自动打包,高效速度快,无兼容性问题;

5M的apk,1秒种能打300个

具体原理:

  1. 生成签名apk
  2. 遍历所有渠道,并拷贝出一样的apk
  3. 把渠道号、版本号、唯一码(验证)、渠道号长度、版本号长度逐一转为小端序byte编码。
  4. 将编码加密并添加到apk末端一字节中(comment)
  5. app启动时候通过反射getPackageCodePath方法获取安装包路径
  6. 获取apk末端comment内容
  7. 解码得出渠道号

Attachments