日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

【Java 虚拟机原理】动态字节码技术 | Dalvik ART 虚拟机 | Android 字节码打包过程

發布時間:2025/6/17 Android 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Java 虚拟机原理】动态字节码技术 | Dalvik ART 虚拟机 | Android 字节码打包过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、動態字節碼技術
  • 二、Dalvik & ART 虛擬機
  • 三、Android 字節碼打包過程
  • 總結





一、動態字節碼技術



動態字節碼技術 就是在 運行時 , 動態修改 Class 字節碼 數據 ;

如 : 修改下面字節碼文件中的二進制數據信息 ;

動態字節碼技術實現 :

  • 首先 , 要 分析整個 Class 字節碼中的信息 ;
  • 然后 , 找到要修改的字節碼 數據位置 ;
  • 最后 , 替換對應的二進制數據 ;

常用的動態字節碼技術 :

  • Javassist : 創建 / 分析 / 編輯 Java 字節碼文件 ;
  • ASM : 操作 / 分析 Java 字節碼文件 ;

使用 Javassist 框架 , 可以自動查找要修改的內容所在字節碼文件中的位置 , 不需要開發者自己手動分析 Java 字節碼文件 ;





二、Dalvik & ART 虛擬機



Android 5.05.05.0 之前使用 Dalvik 虛擬機 . 5.05.05.0 之后使用 ART 虛擬機 ;

Dalvik 已經被淘汰 , 目前重點學習 ART 即可 ;


JVM 與 Dalvik 虛擬機區別 :

  • JVM 是基于棧的 ; 打包后的字節碼文件是 jar 文件 ;
  • Dalvik 是基于寄存器的 ; 打包后的字節碼文件是 dex 文件 ; 程序在 CPU 上運行 , 通過執行寄存器上的指令對數據進行操作 ;

jar 文件與 dex 文件 對比圖 :

JVM 中有 JIT 即時編譯器 , 代碼在運行時 , 邊解釋 , 邊運行 , 如果有一段代碼經常運行 , 則可以通過 JIT 即時編譯器 提前準備 ,





三、Android 字節碼打包過程



Android 源碼打包成安裝文件 , 安裝到設備中 , 最后執行應用程序 , 期間的各種執行細節 ;

  • 編寫好 Java 源碼文件 ;
  • 使用 javac 工具 , 將 Java 源碼編譯成 class 字節碼文件 ;
  • 使用 dx 工具 , 將 class 字節碼文件打包到 dex 文件中 ;
  • 通過 APK Builder 將 dex 文件 / 資源文件 / AIDL 文件 / SO 動態庫 等 , 打包到 APK 安裝包中 ;

總結

推薦書籍 :

  • 深入理解Java虛擬機
  • 深入理解Android 虛擬機

總結

以上是生活随笔為你收集整理的【Java 虚拟机原理】动态字节码技术 | Dalvik ART 虚拟机 | Android 字节码打包过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。