导图社区 程序热修复知识点学习框架笔记
程序热修复知识点复习的框架。整理了重要概念 ,定义,以及热门的开源框架,参考资料等知识点,框架清晰,内容全面,感兴趣的小伙伴可以下载收藏哟。
网店详情页排版方法分享~包括中心页面组成,优质详情必备,详情页的排版参考方法。感兴趣的小伙伴可以看看哦~
喷绘色彩基础培训方案,内容涵盖色彩基础,喷绘写真。框架清晰,内容丰富,希望对小伙伴有所帮助哦~
酒窖营销计划方案,包括结果目标,过程目标。框架清晰,内容丰富,有需要的小伙伴可以看看哦~ 可供大家参考,借鉴,交流。
社区模板帮助中心,点此进入>>
论语孔子简单思维导图
《傅雷家书》思维导图
《童年》读书笔记
《茶馆》思维导图
《朝花夕拾》篇目思维导图
《昆虫记》思维导图
《安徒生童话》思维导图
《鲁滨逊漂流记》读书笔记
《这样读书就够了》读书笔记
妈妈必读:一张0-1岁孩子认知发展的精确时间表
程序热修复知识点学习框架笔记
重要概念
动态加载
在程序运行的时候,加载一些程序自身原本不存在的可执行文件并运行这些文件里的代码逻辑。
增量更新
做更新的时候更新部分,将旧版本的apk和差异包合并成为一个新的apk,引导客户安装
优缺点
优点
节省流量,加快更新速度
缺点
针对不同版本要生成不同的差异包
不安装官方版本无法做更新
开源项目
https://github.com/cundong/SmartAppUpdates
热修复
修改了小部分代码,不用重新发包,在用户不知情的情况下,给app打补丁,让app按照补丁的逻辑运行
插件化
拆分apk,形成宿主+寄生关系
DynamicLoadApk(携程)
Atlas(阿里)
DroidPlugin(360)
组件化
把常用的模块代码,抽取lib工程或者jar达到复用的效果
MultiDex
dex内方法数目超过65536(short长度范围-32768~32767),会提示错误,就需要拆分dex
定义
用户不用重新下载一个新的apk安装,而是直接下载一个补丁包,通过补丁来替换一些出现bug的类, 当然下载补丁的过程用户一般是感觉不到的,表面上看是直接修复了bug。 在早期的android系统中,为了优化dex,所有的method会存放在一张表里面,表的大小位short,也就是65535(65K)现在android代码非常多,超过65K很正常,这个时候就需要一种解决方案来解决这个问题。简单来说就是将编译好的class文件分拆成2个dex文件,绕过65k的限制
原理
什么是Dex
简单说就是优化后的android版.exe。每个apk安装包里都有。相对于PC上的java虚拟机能运行.class;android上的Davlik虚拟机能运行.dex
热修复就是利用android中的 DexClassLoader 类加载器,动态加载补丁dex,替换有bug的类
热门的开源框架
AndFix
全称是Android hot-fix。是阿里开源的一个热补丁框架,允许APP在不重新发布版本的情况下修复线上的bug。支持Android 2.3 到 6.0,并且支持arm 与 X86系统架构的设备。完美支持Dalvik与ART的Runtime,补丁文件是以 .apatch 结尾的文件
修复流程
发现bug(全局异常处理将错误提交到服务器,友盟统计分析)
分析bug产生的原因(根据错误的日志分析)
创建并发布补丁
App打补丁
使用步骤
1. 第一步 导包 compile 'com.alipay.euler:andfix:0.5.0@aar'(版本自己去github查看)
2. 第二步 初始化 PatchManager
2.1. PatchManager patchManager = new PatchManager(this);
2.2. patchManager.init("1.0");
3. 第三步 Load patch 加载补丁
3.1. patchManager.loadPatch();
4. 第四步 Add patch 添加补丁
4.1. //path:补丁文件下载到本地的路径。 patchManager.addPatch(path);
5. 如何创建补丁
1. 下载生成补丁工具
1.1. https://raw.githubusercontent.com/alibaba/AndFix/master/tools/apkpatch-1.0.3.zip
1.2. 解压
1.2.1.
2. 如何使用这个工具
1. 准备工作
1. 准备两个应用apk: 一个是线上的apk,另一个是修复了bug的apk.
2. 通过提供的两个apk生成补丁文件
2. 将两个apk文件和该app的签名文件放入到该目录中
2.1.
2.2. apkpatch.bat(window)
2.3. apkpatch.sh(mac)
3. 修改后的代码
3.1. 1.0版本
3.1.1.
3.2. 2.0版本修复版
3.2.1.
4. 使用命令生成.apatch补丁文件
1. 先cmd进入该目录
1.1.
2. 命令
2.1. apkpatch -o /Users/zhangwei/Desktop/apkpatch/ -k hotfix.jks -p 123456 -a hotfix -e 123456 -f hotfix2.0.apk -t hotfix1.0.apk 字段说明: -o <output> : 输出目录 -k <keystore>: 打包所用的keystore -p <password>: keystore的密码 -a <alias>: keystore 用户别名 -e <alias password>: keystore 用户别名密码 -f <new.apk> :新版本 -t <old.apk> : 旧版本
3. 生成完后
3.1.
无法添加新类和新的字段
需要使用加固前的apk制作补丁,但是补丁文件很容易被反编译,也就是修改过的类源码容易泄露。
使用加固平台可能会使热补丁功能失效(看到有人在360加固提了这个问题,自己还未验证)
Nuwa
dexposed
参考资料
http://www.jianshu.com/p/2c80234a43c4