Android热修复1、class文件与dex文件解析https://www.jianshu.com/p/dea6a368944d
Android热修复2、虚拟机深入讲解https://www.jianshu.com/p/17f7843e09bc
Android热修复3、ClassLoader原理讲解https://www.jianshu.com/p/e3970180a002
Android热修复4、热修复简单讲解https://www.jianshu.com/p/1691685aeedf
Android热修复5、AndFix详解https://www.jianshu.com/p/1cfad3d1079a
Android热修复6、Tinker详解及两种方式接入https://www.jianshu.com/p/0ae5c0c259d1
Android热修复7、引入热修复后代码及版本管理https://www.jianshu.com/p/cd5104a6205c
阿里 :优酷、支付宝
腾讯系:微信
解决问题:
1刚发布应用就发现了严重bug。
2小功能想即时推送给用户(特定节日界面变化)
提前需要对dex和class有基本了解
1、class文件结构深入解析
什么是class文件
能够被jvm识别,加载并执行的文件格式
java语言、Scala语言、Python语言、其他语言 都能生成class文件。
如何生成class文件、几种途径(重点)
两种途径:
.通过IDE自动生成帮我们build
.手动通过javac去生成class文件
class文件作用
记录一个类文件中所有信息,记住是所有。
class中记录的信息远远多于源代码(this、super等)
class文件结构详解(核心知识)
宏观上:
1一种8位字节的二进制流文件;
2各个数据顺序紧密排列,无间隙;
3每个类或接口都单独占据一个class文件;
class详细结构:
1.pngaccess_flags取值范围
2.pngconstant_pool所包含的内容
3.png分别存储我们class中的integer、long、string类型、及short、byte等(这里没有列举)
4.png分别存储我们class中类相关信息、field、method相关信息。
*具体查看一个class可使用010Editor
class文件弊端
内存占用大,不适合移动端
堆栈的加载模式,加载速度慢
文件io操作多,类查找慢
2、dex文件结构深入解析
什么是dex
能够被dvm识别,加载并执行的文件格式。
可以通过C/C++生成dex文件
如何生成dex(重要)
.通过IDE自动帮我们build生成
.手动通过dx命令去生成dex文件(ide原理也是dx)
生成dx文件:(需配置环境变量:sdk/最高版本/dx)
dx --dex --output Hello.dex Hello.class
执行dx文件:(需连上手机)
dalvikvm -cp /sdcard/Hello.dex Hello
5.png
dex文件作用
记录整个工程中所有类文件的信息,记住是整个工程!
dex文件格式详解(核心)
.一种8位字节的二进制流文件
.各个数据按顺序紧密排列,无间隙
.整个应用中所有的Java源文件都在一个dex中(不考虑mutidex技术)
3、class与dex文件对比
.本质上一样,dex是从class文件演变而来
.class文件存在许多冗余信息,dex会去除冗余,并合并
如图:
网友评论