Hotpatch

Android HotPatch 技术研究总结

柔情痞子 提交于 2019-12-07 02:47:39
本次HotPatch的研究主要基于一片文章:《 Android-HotPatch在线热补丁方案 》和一个实践,手机淘宝HotPatch项目。 特性(Features): 不用安装,直接修改当前APK的逻辑。 缺陷(Defect): 1,无法更改程序版本号码。 2,每次程序启动,都需要载入Patch。不能真正修改原始APK。 局限(Confine): 平台: API Level : [9,10]U[14-19] Android 2.3 - Android 4.X 中间不包含 Android3.X CPU: ARM 支持, x86不支持。 系统: 阿里云系统不支持。 虚拟机: Dalvik 支持, ART 不支持。 安全(Security): 在主APK应用此技术后,当无防范措施时,极有可能给不安全代码以可乘之机。特别注意!!! 1,打包apk必须使用主app签名文件签名; 2,主app对加载的patch apk做签名和无篡改校验 自手淘项目实践的一个简单HotPatch过程。 Hotpatch 的工作流程是: 1.实现一个从服务器端获取Patch信息的接口(上传本地客户端版本等信息,服务器好根据这些信息来判断是否有对应的Patch包),并将这个信息注入给HotpatchManager。 2.检测客户端是否可以支持。(Android L和Android M)目前都不支持,最低支持2.3

Android Hotpatch系列之-项目介绍

☆樱花仙子☆ 提交于 2019-12-06 12:26:04
在手淘工作期间,内部有一套解决方案,给线上apk打补丁,直接修复bug,不用客户端升级,有严重线上bug,找到问题,写个patch,推上线就把问题解决了,用过的都说好。前段时间,他们终于把这套东西的Android端开源了, Dexposed ,具体可以看详细的项目介绍。其功能就是可以加载类,替换原先apk里面某个类的方法,或者在方法之前,方法之后做些什么,比如在方法执行之前,修改传入方法的参数了,方法执行以后,修改方法的返回值,或者就是完全替换掉原先的方法。 项目里面有一个sample,介绍了如何加载一个外部apk包,然后替换宿主apk里面类的方法。其实这就已经完成了80%的工作了,我做的工作只是将Patch获取从本地加载改成了去服务器获取,以及添加了Patch apk的校验(md5和签名信息)。 Hotpatch 的工作流程是: 1.实现一个从服务器端获取Patch信息的接口(上传本地客户端版本等信息,服务器好根据这些信息来判断是否有对应的Patch包),并将这个信息注入给HotpatchManager。 2.检测客户端是否可以支持。(Android L和Android M)目前都不支持,最低支持2.3 3.如果客户端支持,那就调用第一步注入的Patch包获取类,获取到对应的Patch信息。下载Patch apk文件。 4.校验。获取下载好的Patch apk