Please enable JavaScript.
Coggle requires JavaScript to display documents.
知识库 | 手Q编译, 4.4的dex加载 | 加载核心类 - Coggle Diagram
知识库 | 手Q编译
优化方案
dex生成
只替换改动java对应的dex
源码编译
jar增量编译
zip解压
依赖分析
插件编译
编译成jar
资源merge到主工程
javac增量编译
依赖分析
资源编译
资源混淆
目的
减少体积
反破解
资源固定
用途
热修复
插件化
增量编译
实现
aapt输入public.xml参数
aapt2使用--stable-ids
目的
新增、删除资源,不影响其他资源id变化
部署优化
业界方案
补丁/热修复替换
将补丁dex放在dex最前面
hot swap
在所有方法前插桩,走新dex的修复方法
手Q方案
全量dex替换
编译场景
RDM编译
本地编译
增量
全量
插件编译
优化目的
本地编译效率
65535方法数限制
4.4的dex加载 | 加载核心类
加载步骤
从私有目录找到dex
调用BaseDexClassLoader执行loadClass
反射设置dexElements
不在主dex,会crash
Application、BaseActivity,以及其全依赖集