Android热补丁修复框架DroidFix使用笔记
来源:互联网 发布:sql server启动的图标 编辑:程序博客网 时间:2024/05/21 13:59
热补丁原理篇:
https://zhuanlan.zhihu.com/p/20308548
热补丁方案比较篇:
http://blog.zhaiyifan.cn/2015/11/20/HotPatchCompare/
DroidFix使用:
地址:https://github.com/bunnyblue/DroidFix
第一步:
结合DroidFix到简理财项目
1、将DroidFix中的AntilazyLoad、droidfixcore、ClassComputer.jar导入到项目中指定位置。
说明:
1.droidfixcore是补丁包的核心包,原理是使用classloader替换.class;
2.AntilazyLoad是为了避免被标记为CLASS_ISPREVERIFIED导致打补丁包出现异常;
3.ClassComputer.jar是比较出修改了哪些类,将修改的类打入补丁包,没修改的不打;详细见上面的原理篇
2、修改build.gradle的buildTypes,添加proguard-droidfix.pro
说明:
1.由于项目混淆了,混淆后的类记录在mapping文件中,打修复包的时候,利用正式包的mapping文件,这样就使得同一个类再没有改变的情况下两次混淆的结果相同,从而筛选出要修复的类
2.从def userDebugFix=true那一行往下是打包时生成补丁包复制mapping文件,查找差异类使用的
第二步:
下载补丁包、应用补丁包
下载补丁包流程如下
每次启动app如果有补丁包则应用补丁包:
第三步:
说明:
1.模拟打一个线上包,所以用debug,minifyEnable必须为true
2.打完包之后会生成DroidPatch文件夹,里面有两个文件:classes.md5.txt记录class的md5值,mapping.txt记录类的混淆,结合这两个文件才能找出下次打补丁包修改过的类,所以每一个版本都要将上线包的这两个文件保存,打补丁包的时候使用。
3.修复BUG类后,Build Type选择debugDroidFix打包,会在DroidPatch文件夹生成几个文件,其中patch.apk就是我们要的补丁包文件,上传到后台就ok了
优缺点:
优点:
使用简单,纯java编程,屏蔽了底层差异,支持2.3-6.0,无视360加固
缺点:
1、资源文件无法修复
该方案修复的是class,因此无法修复资源文件也就是res文件夹。但可以采取其他方式来解决,比如,对于布局文件,我们可以用java硬编码的方式来实现;对于字符资源,可以直接在代码中硬编码。
2、清单文件AndroidMainfest文件改动无法修复
假如想要添加新的Activity或是Service,无法通过在清单文件中重新注册来实现。这里可以采用注册占坑Activity和Service来解决。
3、自定义Application以及Provider无法修复
Provider由于比应用更早加载到系统中,因此Provider无法修复。自定义的Application,由于安装patch包时,Application已经启动,Application相关的类已经被加载到了系统中,因此需要添加一个代理的Application,将原先Application中的执行逻辑放到代理Application中。
4、应用重新启动生效
由于类只会被加载一次,所以修复包下载之后,重新启动才会生效。
- Android热补丁修复框架DroidFix使用笔记
- Android AndFix热补丁动态修复框架使用教程
- Android AndFix热补丁动态修复框架使用教程
- Android 热补丁动态修复框架小结
- Android 热补丁动态修复框架小结
- Android 热补丁动态修复框架小结
- Android 热补丁动态修复框架小结
- Android 热补丁动态修复框架小结
- Android 热补丁动态修复框架小结
- Android 热补丁动态修复框架小结
- Android 热补丁动态修复框架小结
- Android 热补丁动态修复框架小结
- Android 热补丁动态修复框架小结
- Android 热补丁动态修复框架小结
- Android 热补丁动态修复框架总结
- Android 热补丁动态修复框架小结
- Android 热补丁动态修复框架小结
- Android 热补丁动态修复框架小结
- CountDownLatch
- FORCE_UNSAFE_CONFIGURE
- nodejs 使用npm install express报错解决方案
- PHP实现单向链表解决约瑟夫环问题
- 可视化时钟,好吧!我承认我懒
- Android热补丁修复框架DroidFix使用笔记
- 互联网金融时代制约小微企业发展的因素有哪些
- Reach vs. HiDef
- 数据结构与算法总结1_常用的数据结构(线性表)
- openssl解加密,数字签证
- xpath查询xml
- http url转义字符,特殊字符
- Go语言_类型转换_interface与强类型(int,string...)转换
- 蓝牙BLE AmoMcu cc2540 2541 OSAL 操作系统 LED