| Version 9 (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个
大概原理:
- 生成签名apk
- 遍历所有渠道,并拷贝出一样的apk
- 把渠道号、版本号、唯一码(验证)、渠道号长度、版本号长度逐一转为小端序byte编码。
- 将编码加密并添加到apk末端一字节中(comment)
- app启动时候通过反射getPackageCodePath方法获取安装包路径
- 获取apk末端comment内容
- 解码得出渠道号
操作步骤
- 全局搜索项目“MOFANG_CHANNEL”,讲获取该meta字段的方法改为 Mofang.getChannel(context)、把gradle打包脚本productFlavors去掉。
- 依赖包确保高于 'com.imofan.android.basic:imofan:2.3.0’ 'cn.com.pc.framework:framework:3.2.8.2’
- 确保有执行Mofan.init()
- 生成签名的apk文件。
- 使用MCP_PCONLINE.jar 批量生成渠道包。
用法:java -jar MCP_PCONLINE.jar [-path] [arg0] [-outdir] [arg1] [-contents] [arg2] [-password] [arg3]
-path APK文件路径
-outdir 输出路径(可选),默认输出到APK文件同一级目录
-contents 写入内容集合,多个内容之间用“;”分割(linux平台请在“;”前加“\”转义符),如:googleplay;m360; 当没有-contents”参数时输出已有文件中的contents
-password 加密密钥(可选),长度8位以上,如果没有该参数,不加密
-version 显示MCP_PCONLINE版本号
-contentsdir 传入渠道号文件,用换行符分隔
例如:
写入:java -jar MCP_PCONLINE.jar -path D:/test.apk -outdir ./ -contents googleplay;m360;
读取:java -jar MCP_PCONLINE.jar -path D:/test.apk
批量生成加固安装包
- 生成用sha1签名的apk
- 上传到加固平台并加固下载
- 使用sha1重签名加固包
- 使用MCP_PCONLINE.jar 批量生成渠道包。
Attachments
-
MCP_PCONLINE1.1.jar
(11.5 KB) -
added by luochengbin 9 years ago.
-
MCPTool.java
(17.5 KB) -
added by luochengbin 9 years ago.
-
安卓打包工具.rar
(19.4 MB) -
added by luochengbin 7 years ago.
-
安卓打包工具1.1.7z
(17.1 MB) -
added by luochengbin 7 years ago.
-
PcApkMessage1.2.exe
(3.8 MB) -
added by luochengbin 7 years ago.
![(please configure the [header_logo] section in trac.ini)](http://www1.pconline.com.cn/hr/2009/global/images/logo.gif)