我有一個關於DEX文件Android中的.dex文件是什麼?
- 什麼是
dex
文件在Android的一些問題? - dex如何在Android上運行?
- 它們如何用於調試Android應用程序?
- 它們與java類文件類似嗎?
我需要具體的信息,請幫助這個和任何真實的例子,歡迎!
我有一個關於DEX文件Android中的.dex文件是什麼?
dex
文件在Android的一些問題?我需要具體的信息,請幫助這個和任何真實的例子,歡迎!
.dex file
編譯的Android應用程序代碼文件。
Android程序被編譯成.dex(Dalvik可執行文件)文件,該文件又被壓縮到設備上的一個.apk文件中。 .dex文件可以由Android自動創建,通過翻譯用Java編程語言編寫的編譯應用程序。
我的jar文件在assets文件夾中包含一些xml。我希望這成爲.dex的一部分。 任何想法如何實現? – AndroidGuy
關於.DEX文件:
之一Dalvik Virtual Machine
(在Android系統下的主力)的最顯着的特點是,它不使用Java字節碼。相反,引入了名爲DEX的本地格式,甚至連字節碼指令都不像Java字節碼指令相同。
Compiled Android application code file.
的Android程序被編譯成.dex
(Dalvik的可執行)文件,其又壓縮到所述設備上的單個.apk
文件。 .dex
文件可以通過自動翻譯以Java編程語言編寫的編譯應用程序來創建。
敏捷文件格式:
1. File Header
2. String Table
3. Class List
4. Field Table
5. Method Table
6. Class Definition Table
7. Field List
8. Method List
9. Code Header
10. Local Variable List
Android已經對Dalvik Executable Format
(.DEX文件)文檔。您可以在官方文檔瞭解更多了:Dex File Format
.dex
文件類似於Java類文件,但他們下Dalkvik虛擬(DVM)上較舊的Android版本上運行,並在設備上安裝時進行編譯在較新的Android版本上使用ART的本地代碼。
您可以使用decompile
.dex使用在android-sdk中提供的dexdump
工具。
也有一些逆向工程技術從.dex
文件進行jar file
或java class file
。
我的jar文件包含資產文件夾中的一些xml。我希望這成爲.dex的一部分。 任何想法如何實現? – AndroidGuy
@AndroidGuy - Jar文件不包含任何Android資源包(/資產),您必須爲此使用Android庫包。 – user370305
JADX:Dex to Java反編譯器https://github.com/skylot/jadx(Apache許可證) – foo
dex
文件是在Dalvik虛擬機上執行的文件。
Dalvik VM包含幾個用於性能優化,驗證和監控的功能,其中之一是Dalvik Executable(DEX)。
Java源代碼由Java編譯器編譯爲.class
文件。然後,dx
(dexer)工具(Android SDK的一部分)將.class
文件處理爲包含Dalvik字節碼的名爲DEX
的文件格式。 dx
工具消除了類中存在的所有冗餘信息。在DEX
中,應用程序的所有類都打包成一個文件。下表提供了JVM jar文件的代碼大小與dex
工具處理的文件之間的比較。
該表比較了系統庫,Web瀏覽器應用程序和通用應用程序(鬧鐘應用程序)的代碼大小。在任何情況下,dex工具都可以將代碼的大小減少50%以上。
在標準Java環境中一個.class
文件Java代碼結果中的每一類。這意味着,如果Java源代碼文件有一個公共類和兩個匿名類,那麼讓我們說,對於事件處理,那麼java編譯器將創建總共三個.class
文件。
Android平臺上的編譯步驟相同,因此導致多個.class
文件。但生成.class
文件後,將使用「dx」工具將所有.class
文件轉換爲單個.dex
或Dalvik可執行文件。它是在Dalvik VM上執行的.dex
文件。 .dex
文件已針對內存使用進行了優化,設計主要由共享數據驅動。
這裏的類文件包含標準的Oracle JVM字節碼。
•DALVIK字節碼
[Java類文件]> [DEX類文件]
由於,java的.class文件包含JVM標準字節碼。但Android設備不使用這種字節碼格式。相反,Android有自己獨特的字節碼格式,稱爲Dalvik。 Dalvik字節碼與Oracle JVM字節碼一樣,是理論處理器的機器碼指令。
編譯過程需要將.class文件和任何.jar庫轉換爲包含Dalvik字節碼的單個classes.dex文件。 dx命令將所有.class和.jar文件拼接成一個用Dalvik字節碼格式編寫的單個classes.dex文件。
現在,將.class和.jar文件轉換爲.dex文件的過程稱爲Dex編譯,這樣獲得的文件稱爲Dex文件。
plz看到這個鏈接http://stackoverflow.com/questions/1249973/decompiling-dex-into-java-sourcecode – Gensheriff
如何在設備上運行它們:http://stackoverflow.com/questions/10199863/how- to-execute-the-dex-file-in-android-with-command –