本教程采用阿里dexposed开源库实现。
https://github.com/alibaba/dexposed
主APP实现:
主程序Application onCreate方法中初始化dexposed
|
|
Patch apk下载及修复:
- 为保证修复patch的及时性,使用push推送patch,客户端收到消息后立即完成patch的下载及修复;
- 客户端版本管理模块在程序入口Activity中检测是否有需要修复的patch;
- 下载完patch apk到程序私有目录,即/data/data/packageName/files目录,同时可在xml中保存patch apk本地存储路径、方便下载启动app时加载补丁patch。
|
|
Patch Apk部分:
dexpose支持方法粒度的patch,可以实现整个方法的替换或方法前、后执行修复代码。
以下实例为方法替换实例,其它只需实现相应的回调接口即可。
方法替换实例:
- 新建Android工程,引入patchloader.jar、dexposedbridge.jar;
- 创建Patch修复类实现IPatch接口;
|
|
- 打包patch apk,上传到服务器并通知客户端下载。
Patch Apk安全性:
- 打包apk必须使用主app签名文件签名;
- 主app对加载的patch apk做签名和无篡改校验: