跳到正文
Pollex's blog
返回

Android多渠道包生成方案学习记录(V1签名)

目录

基于V1签名方式生成渠道包方法汇总。

关于Android渠道包生成,以前写过一些小工具,集成了三种渠道包生成方案:反编译方案、美团渠道包生成方案、豌豆荚渠道包生成方案,还有一种比较有效率的打包方案是修改zip文件。

反编译方案

方案简述: 通过apktool等工具反编译base.apk,修改Manifest.xml中的meta-data值,重打包,签名。

特点: 过程繁琐,效率低下,无需侵入Android代码。

美团渠道包生成方案

方案简述: 在APK中的签名文件夹META-INF中,放入空文件,名字为渠道信息,APK运行过程中读取APK源文件中的渠道信息。

特点 速度快,过程简单,侵入Android代码(重)。

豌豆荚渠道包生成方案

方案简述: 通过Android SDK提供的AAPT命令,向apk的assert文件夹中加入有内容的渠道文件,重签名,APK运行过程中读取assert目录下的渠道文件。

特点: 速度一般,过程简单,侵入Android代码(低)。

修改zip文件方案

方案简述: APK是zip压缩包,末尾是zip压缩包的注释,向其中添加渠道信息,APK运行过程中读取APK源文件中的注释信息,提取出渠道信息。

特点: 速度快,过程简单,侵入Android代码(重)。

以上是对四种渠道包生成方案的简介,最近发现360加固保的多渠道包生成是修改Manifest.xml中的内容,生成速度速度炒鸡快,但是生成后需要重签名。

新发现

最近在使用360渠道包生成工具,生成渠道包速度非常快,而且是直接修改了Manifest.xml中的渠道号,根据这一思路我开始查APK中Manifest.xml文件导出,二进制解码,xml解析修改,Manifest.xml重编码等相关资料,后来发现,其它过程都没问题,只有Manifest.xml重编码没有相关资料,又查了几天,发现自己进入了一个误区,为什么要把Manifest.xml二进制解码再编码?,直接修改二进制文件不就好了,然后查到了这个项目:(apkeditor)AndroidManifest.xml二进制编辑和签名工具,学习了Manifest.xml二进制文件的参数替换和修改等技巧。

这种Manifest.xml二进制数据替换方案,从打包效率上说比不上美团方案和ZIP注释方案,但是贵在直接修改Manifest.xml中meta-data的数据,不侵入Android代码,最大化兼容了第三方平台渠道号的读取(极光推送只支持从Manifest中读取渠道,不支持动态设置)。


分享这篇文章:

上一篇
Windows查询进程PID,关闭进程
下一篇
最好的移动软件开发方案