自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

你認識Class、Dex、Arsc文件結(jié)構(gòu)嗎?

開發(fā) 前端
DEX(Dalvik Executable)文件是Android應(yīng)用程序編譯后生成的可執(zhí)行文件,它包含了應(yīng)用程序的字節(jié)碼、資源文件和其他相關(guān)信息。DEX文件是Dalvik虛擬機的可執(zhí)行文件格式,它通過將Java字節(jié)碼轉(zhuǎn)換為Dalvik字節(jié)碼來實現(xiàn)在Android設(shè)備上運行應(yīng)用程序。在Android應(yīng)用程序的開發(fā)和部署過程中,DEX文件扮演著非常重要的角色。

class文件

class文件是Java源代碼經(jīng)過編譯后生成的二進制文件,它包含了Java程序的字節(jié)碼。這些class文件可以被Java虛擬機(JVM)執(zhí)行。在計算機上,class文件通常以“.class”作為文件擴展名。

class文件結(jié)構(gòu)如下:

  • 「魔數(shù)(Magic Number)」:class文件的前4個字節(jié)是固定的魔數(shù),用于識別文件格式,通常為0xCAFEBABE。
  • 「版本信息」:緊接著魔數(shù)的4個字節(jié)是版本信息,分別表示編譯器的版本和目標JVM的版本。
  • 「常量池(Constant Pool)」:緊接著版本信息的部分是常量池,用于存儲字面量和符號引用。常量池的結(jié)構(gòu)復(fù)雜,包括各種類型的常量,如字符串、類和接口名、字段和方法名等。
  • 「訪問標志(Access Flags)」:緊接著常量池的部分是訪問標志,用于表示該類或接口的訪問權(quán)限,例如public、final、abstract等。
  • 「類信息」:包括類的父類和實現(xiàn)的接口。
  • 「字段表(Fields)」:描述類或接口中聲明的字段。
  • 「方法表(Methods)」:描述類或接口中聲明的方法。
  • 「屬性表(Attributes)」:包含與類、字段或方法相關(guān)的附加信息,如源文件名、行號表、局部變量表等。
  • 「其他信息」:除了上述主要部分外,class文件還包含一些其他信息,如內(nèi)部類、異常表等。

Java的class文件結(jié)構(gòu)是非常復(fù)雜的,包含了豐富的信息和字節(jié)碼指令,用于在JVM上執(zhí)行Java程序。

dex文件

DEX(Dalvik Executable)文件是Android應(yīng)用程序編譯后生成的可執(zhí)行文件,它包含了應(yīng)用程序的字節(jié)碼、資源文件和其他相關(guān)信息。DEX文件是Dalvik虛擬機的可執(zhí)行文件格式,它通過將Java字節(jié)碼轉(zhuǎn)換為Dalvik字節(jié)碼來實現(xiàn)在Android設(shè)備上運行應(yīng)用程序。在Android應(yīng)用程序的開發(fā)和部署過程中,DEX文件扮演著非常重要的角色。

DEX文件結(jié)構(gòu)如下:

  1. 「魔數(shù)和版本號」:DEX文件以一個固定的魔數(shù)開頭,用來識別文件格式,緊接著是版本號。
  2. 「校驗和」:用于校驗DEX文件的完整性。
  3. 「簽名」:用于驗證DEX文件的合法性。
  4. 「文件頭部」:包含了DEX文件的一些基本信息,如字節(jié)順序、字節(jié)碼偏移量等。
  5. 「字符串列表」:包含了DEX文件中使用的所有字符串。
  6. 「類型列表」:包含了DEX文件中定義的所有類型(類、接口等)的列表。
  7. 「原型列表」:包含了DEX文件中的方法原型列表。
  8. 「字段列表」:包含了DEX文件中定義的所有字段的列表。
  9. 「方法列表」:包含了DEX文件中定義的所有方法的列表。
  10. 「類定義」:包含了DEX文件中定義的所有類的信息。
  11. 「數(shù)據(jù)區(qū)域」:包含了實際的字節(jié)碼、資源和其他數(shù)據(jù)。

以上是DEX文件的基本結(jié)構(gòu),它是Android應(yīng)用程序在Dalvik虛擬機上運行的重要組成部分。

class文件與dex文件結(jié)構(gòu)對比圖:

圖片圖片

arsc文件

ARSC文件是Android資源文件的一種,它包含了Android應(yīng)用程序的本地化字符串和其他資源。ARSC文件通常存儲在APK(Android應(yīng)用程序包)中,用于在不同的語言和地區(qū)之間提供本地化支持。ARSC文件可以包含應(yīng)用程序的字符串、顏色值、尺寸、布局等資源信息。

在Android開發(fā)中,ARSC文件是非常重要的,它可以幫助應(yīng)用程序在不同的語言環(huán)境下提供正確的本地化支持,使得應(yīng)用程序能夠更好地適應(yīng)不同的用戶群體。

ARSC文件結(jié)構(gòu)如下:

- 頭部信息
  - 魔數(shù)(Magic Number)
  - 文件頭大小(Header Size)
  - 資源包大?。≒ackage Size)
  - 資源包偏移量(Package Offset)
  - 資源ID偏移量(Resource ID Offset)
  - 資源類型偏移量(Resource Type Offset)
  - 資源項數(shù)量(Resource Count)

- 資源項信息
  - 資源項大小(Entry Size)
  - 資源項偏移量(Entry Offset)
  - 資源項標志(Entry Flags)
  - 資源項ID(Entry ID)
  - 資源項名稱偏移量(Entry Name Offset)
  - 資源項名稱大?。‥ntry Name Size)
  - 資源項值偏移量(Entry Value Offset)
  - 資源項值大小(Entry Value Size)

- 資源值信息
  - 資源值大?。╒alue Size)
  - 資源值偏移量(Value Offset)
  - 資源值數(shù)據(jù)類型(Value Type)
  - 資源值數(shù)據(jù)(Value Data)

圖片圖片

ARSC文件結(jié)構(gòu)包含頭部信息、資源項信息和資源值信息,用于存儲應(yīng)用程序的資源信息,如字符串、布局、圖片等。

責任編輯:武曉燕 來源: 沐雨花飛蝶
相關(guān)推薦

2017-02-17 10:29:19

AndroidJava文件加密

2013-07-02 14:33:35

JavaClass

2016-12-01 14:47:20

2022-02-21 08:55:35

JavaClass文件代碼

2010-09-26 11:32:39

JVM結(jié)構(gòu)

2021-01-04 08:24:44

Class字段表方法表

2010-02-04 09:55:46

Android DEX

2017-09-07 12:56:24

Linux系統(tǒng)結(jié)構(gòu)

2022-09-13 12:10:04

unlink刪除文件

2018-03-14 14:48:57

人工智能

2011-08-10 14:22:34

2020-07-16 07:45:13

人工智能技術(shù)機器人

2024-03-17 19:14:28

2022-11-03 11:31:43

結(jié)構(gòu)分析法監(jiān)測

2009-08-13 16:41:12

C#結(jié)構(gòu)

2021-03-11 12:27:36

java 變量數(shù)量

2019-03-11 16:24:04

虛擬機JVMJava

2009-02-23 17:53:21

桌面虛擬化虛擬化IT

2019-06-21 15:20:05

Redis數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)庫

2018-12-11 12:04:35

點贊
收藏

51CTO技術(shù)棧公眾號