美文网首页
Android热修复1、class文件与dex文件解析

Android热修复1、class文件与dex文件解析

作者: flynnny | 来源:发表于2021-03-27 23:51 被阅读0次

    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.png

    access_flags取值范围

    2.png

    constant_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技术)

    6.png 7.png 8.png

    3、class与dex文件对比

    .本质上一样,dex是从class文件演变而来
    .class文件存在许多冗余信息,dex会去除冗余,并合并
    如图:

    9.png

    相关文章

      网友评论

          本文标题:Android热修复1、class文件与dex文件解析

          本文链接:https://www.haomeiwen.com/subject/irqshltx.html