2012-03-22 61 views
7

Android將APK程序存儲爲APK格式,這是ZIP/JAR的修改版本。Android如何存儲和運行程序

安裝這些APK文件時,它們存儲在/system/app/$APKNAME.apk中。

此目錄中的一些應用程序還有一個$ APKNAME.obex文件。

這些APK文件包含一些休耕

META-INF 
    MANIFEST.MF 
    CERT.RSA 
    CERT.SF 
SHA1-Digest 
res 
AndroidManifest.xml 
classes.dex 
resources.arsc 

所以我想知道什麼是什麼是.obex文件,是機器人在運行時,如何從APK/ZIP/JAR解壓縮程序?

+0

聲音就像一個APK是一個很像JAR。也就是說,甚至沒有修改ZIP - 只是一個普通的ZIP,但是特定的文件在其中。 – cHao 2012-03-22 03:58:42

+0

請記住,obex不僅僅是解壓縮的,它們也被優化和驗證。這使得驗證者必須做更少的工作,並且不必在運行時進行儘可能多的優化(非顯然你仍然需要做一些)。 – 2012-03-22 04:02:34

+0

@cHao好吧,我真的很想知道從APK安裝到啓動/運行的過程。 – zeitue 2012-03-22 04:03:06

回答

2

這種方式非常有趣,並給出了Android運行時模型的一些重要見解。如果您打算使用Android進行大量系統操作,我建議您首先注意的是Dalvik VM internals。 (雖然它顯然已經老了)。現在,當Android包管理器獲得需要啓動新應用程序的意圖時,它會從已經運行的進程中分離出新的虛擬機。這基本上是一種技術,它允許系統獲得很多很好的內存屬性(共享映射的頁面等)。然後,系統加載一個(可能預先優化和驗證的)文件加載,以便虛擬機可以開始執行它。你應該閱讀this文件,它會告訴你很多關於它是如何工作的。 (也許this線程也會有所幫助。)請記住,因爲所有系統都不同 - 例如,如果您使用的是新體系結構,除非明確寫入,否則不會獲得JIT支持! - 你肯定不知道 Dalvik如何加載代碼來運行你的應用程序。