在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Android文件格式詳解

哆啦安全 ? 來源:哆啦安全 ? 2024-01-02 10:21 ? 次閱讀

1.dex文件格式

dex是android虛擬機的可執行字節碼文件,java文件經過javac編譯成class文件,class文件又被dx處理后生成dex文件。

wKgaomWTcyGAespiAABUNfZ3pUw199.png

dex文件分為四大部分: DEX文件頭,索引結構區,data數據區,靜態鏈接數據區。

所有的代碼和數據都放在data數據區中,索引結構區中存放的是data中各種數據的對應的偏移和索引。

wKgZomWTcyGAKGVvAABTNmV3blM069.png

利用010查看一個dex文件的信息,可以發現此文件并沒有靜態鏈接數據區。

2.odex和oat格式

在android4.4之前,android為了優化程序執行效率使用的是JIT(just-in-time)即時編譯,也就是程序運行時編譯。因為apk文件是一個zip壓縮包的格式,每次系統啟動程序時都需要從apk中讀取dex文件并加載執行,為了減少程序啟動時從apk讀取dex文件所需要的,android在apk第一次安裝的時候dexopt將程序的dex文件進行優化生成odex文件,并將其放在了/data/dalvik-cache目錄下。等下次apk啟動時直接加載這個目錄中經過優化的odex文件減少啟動所需要的時間(優化基于當前系統的dalvik虛擬機版本,不同版本上的odex文件無法進行兼容)。在程序運行時android虛擬機會對一些執行頻率較高的熱點函數進行jit編譯生成對應的本地代碼,下次再執行此函數的時候直接執行對應的本地代碼提高了執行的效率,注意jit編譯的代碼只會存在于內存中并不會持久化保存再磁盤中,下次啟動apk后執行此函數還需要解釋執行。

在android4.4之后,android使用的是AOT(Ahead-of-time)事前編譯,也就是程序在運行前先編譯。oat是ART虛擬機運行的文件,是ELF格式二進制文件,包含DEX和編譯的本地機器指令,oat文件包含DEX文件,因此比ODEX文件占用空間更大。程序在首次安裝的時候,dex2oat默認會把classes.dex編譯成本地機器指令,生成ELF格式的OAT文件,并將其放在了/data/dalvik-cache或者是/data/app/packagename/目錄下。ART加載OAT文件后不需要經過處理就可以直接運行,它在編譯時就從字節碼裝換成機器碼了,因此運行速度更快。不過android4.4之后oat文件的后綴還是odex,但是已經不是android4.4之前的文件格式,而是ELF格式封裝的本地機器碼.可以認為oat在dex上加了一層殼,可以從oat里提取出dex.

wKgaomWTcyGAWFU6AABrBrcvzT8733.png

因為此時的oat文件是一個標準的elf文件,識別其是不是oat文件的標準就是看其符號表。

wKgZomWTcyGAUHu5AABXj-L9TYk340.png

oatdata指向的是ELF文件的.rodata節區,存放了OAT文件頭OATHeader,OAT的DEX文件頭,原始DEX文件的DexFile等信息。

oatexec指向的是ELF文件的.text節區,這里存放的是編譯生成的指定平臺的二進制代碼。

oatlastword指向的是對應oat文件的結尾。

wKgaomWTcyGAduFFAABpPifzAio955.png

3.vdex文件格式

在android8.0(Android O)之前dex文件嵌入到oat文件本身中,在Android 8.0之后dex2oat將classes.dex優化生成兩個文件oat文件(.odex)和vdex文件(.vdex)

odex文件中包含了本機代碼的OAT

vdex文件包含了原始的DEX文件副本

wKgZomWTcyGAdnF_AADo2UEo-lU107.png

4.art文件格式

ART虛擬機在執行dex文件時,需要將dex文件中使用的類,字符串等信息轉換為自定義的結構。art文件就是保存了apk中使用的一些類,字符串等信息的ART內部表示,可以加快程序啟動的速度。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Android
    +關注

    關注

    12

    文章

    3936

    瀏覽量

    127404
  • 文件格式
    +關注

    關注

    0

    文章

    19

    瀏覽量

    15083
  • 程序
    +關注

    關注

    117

    文章

    3787

    瀏覽量

    81043
  • 虛擬機
    +關注

    關注

    1

    文章

    917

    瀏覽量

    28196

原文標題:Android的dex、odex、oat、vdex、art文件格式

文章出處:【微信號:哆啦安全,微信公眾號:哆啦安全】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    RIFF文件格式簡介

    RIFF(Resources Interchange File Format)中文翻譯為資源互換文件格式,是Windows下大部分多媒體文件遵循的一種文件結構。
    的頭像 發表于 10-07 16:25 ?1740次閱讀
    RIFF<b class='flag-5'>文件格式</b>簡介

    App加固技術解析:DEX文件格式詳解

    1、DEX文件格式的解析  Android應用的源代碼主要分為java與C/C++兩部分,其中java編譯后的文件是DEX文件,也是Android
    發表于 09-28 11:21

    MP3 文件格式資料

    MP3 文件格式資料
    發表于 04-08 03:37 ?22次下載

    如何光繪輸出AutoCAD文件格式

    教你光繪輸出AutoCAD文件格式
    發表于 06-07 15:16 ?36次下載

    .mpp文件格式打開軟件下載

    .mpp文件格式打開
    發表于 07-07 13:14 ?2517次下載

    適用于IPTV大并發應用的文件格式

    分析交互式網絡電視(IPTV)大并發應用的特性,提出一種適用于IPTV大并發應用的服務器內部文件格式cl4文件格式。該文件格式采用了符合IPTV大并發應用特性的音視頻數據交織、媒體數
    發表于 04-15 10:02 ?17次下載

    LabVIEW數據文件格式的視頻教程

    LabVIEW數據文件格式的視頻教程 LabVIEW數據文件格式之華山論
    發表于 03-26 12:16 ?113次下載

    數碼相機伴侶的文件格式

    數碼相機伴侶的文件格式              文件格式指的是數碼相機伴侶獨特的文件系統結構在
    發表于 12-23 10:05 ?879次閱讀

    GIF圖形文件格式文檔

    GIF圖形文件格式文檔 GIF圖形文件格式文檔 GIF圖形文件格式文檔
    發表于 05-24 10:53 ?2次下載

    GIF文件格式詳解

    GIF文件格式詳解 GIF文件格式詳解 GIF文件格式詳解
    發表于 05-24 10:53 ?2次下載

    了解LabVIEW數據文件格式

    LabVIEW數據文件格式之華山論劍視頻教程
    的頭像 發表于 06-25 00:13 ?4835次閱讀
    了解LabVIEW數據<b class='flag-5'>文件格式</b>

    STM32--hex文件格式

    ? ? hex 是 Intel 公司制定的一種使用 ASCII 文本記錄機器碼或常量數據的文件格式,它可以燒錄到MCU中,被MCU執行的一種文件格式。一個hex文件由多條記錄組成,而每條記錄由5個
    發表于 12-06 11:21 ?4次下載
    STM32--hex<b class='flag-5'>文件格式</b>

    WAV文件格式詳解

    WAV是微軟公司開發的一種音頻格式文件,用于保存Windows平臺的音頻信息資源,它符合資源互換文件格式(Resource Interchange File Format,RIFF)文件規范。標準
    的頭像 發表于 10-21 09:52 ?5344次閱讀
    WAV<b class='flag-5'>文件格式</b><b class='flag-5'>詳解</b>

    常用對象文件格式

    電子發燒友網站提供《常用對象文件格式.pdf》資料免費下載
    發表于 10-15 09:25 ?0次下載
    常用對象<b class='flag-5'>文件格式</b>

    EPS文件格式如何轉換 EPS和SVG文件的區別

    EPS文件格式轉換 EPS(Encapsulated PostScript)是一種用于存儲矢量圖形的文件格式,最初由Adobe公司開發。由于EPS文件在打印時能夠保持極高的質量,并且廣泛被各種
    的頭像 發表于 11-19 10:31 ?511次閱讀
    主站蜘蛛池模板: 日日干夜夜欢| 精品视频网站| 色婷婷在线视频| 五月在线观看| 日本高清www| 99一级毛片| 午夜影院黄| 日本免费不卡一区| 一级特黄性生活大片免费观看| 欧美1314www伊人久久香网| 国产婷婷高清在线观看免费| 91精品国产91久久久久久青草| 日日干夜夜骑| 三级a黄| 欧美大片一区| 第四色激情网| 国产成人综合亚洲怡春院| 中文字幕一区在线播放| 亚洲综合色吧| 国产高清一区二区三区四区| 88av视频在线| 国产免费亚洲| 欧美综合精品一区二区三区| www色网站| 免费人成网站线观看合集| 黄视频网站免费看| 日本免费大黄在线观看| www四虎影视| 久久久黄色片| 欧美日韩亚洲一区| 日韩一卡 二卡 三卡 四卡 免费视频| 韩国r天堂| 爱搞逼综合| 一级做a爰片久久毛片免费看| 国模私拍福利一区二区| 亚洲人成网站色7799在线播放 | 中文字幕色婷婷在线精品中| 性生活一区| 国产伦子一区二区三区四区| 狼人 成人 综合 亚洲| 亚洲成人伊人网|