2015-11-04 32 views
12

在Android系統或開發環境中,AAR,JAR,DEX和APK文件有什麼區別?每個人的目的是什麼?Android中的AAR,JAR,DEX,APK之間的區別

AFAIK,JAR就像一個.class文件的集合(就像在Java中一樣)。

AAR是JAR文件+資源。但是它的用法是什麼?用於分發適用於Android的開發庫?

APK似乎與.deb或.rpm等軟件包類似。它是在Android上安裝應用程序的唯一方法嗎?

DEX文件怎麼樣?編譯的應用程序......但是JAR或AAR文件有什麼區別?

Moreveor在爲Android分發.so(即本機代碼)文件時,最好的方法是什麼?

+0

現在,APK是Android上應用程序的唯一可接受的二進制格式。 –

回答

12

JAR就像一個.class文件的集合(就像在Java中一樣)。

那是因爲它是Java JAR。

AAR是JAR文件+資源

正確的。

但是它的用法是什麼?用於分發適用於Android的開發庫?

正確。

是在Android上安裝應用程序的唯一方法嗎?

一般來說,是的。

DEX文件怎麼樣?

DEX文件包含代表應用程序代碼的交叉編譯的Dalvik字節碼。開發人員編寫 Java,但Android 運行 Dalvik字節碼。在APK中,您將找到代表這些字節碼的DEX文件。

Moreveor,當爲Android分發.so(即本機代碼)文件時,最好的方法是什麼?

我不知道你是什麼意思的「分佈」。

如果您的意思是「發佈應用程序」,您的.so文件將位於APK中。

如果您的意思是「爲其他開發者分發庫」,請使用AAR或源代碼形式的Android項目。

+1

因此,例如AAR庫不會編譯成Dalvik字節碼?如果是,與DEX有什麼不同?如果它們不是,它們在鏈接應用程序時是否應該轉換成Dalvik? – sapito

+0

@sapito:「那麼例如AAR庫不會編譯成Dalvik字節碼?」 - 正確。如果你看一個(它們只是一個ZIP存檔),你會看到一個JAR。 「在鏈接應用程序時,他們是否應該轉換成Dalvik?」 - 是的。 – CommonsWare

+0

@CommonsWare你是什麼意思的「看看」一個AAR文件?這不是您可以檢查的文件夾。 –

16

JAR(Java歸檔)

JAR是專爲在其平臺上的Java應用程序的分發包文件格式。它包含已編譯的Java類文件+一些更多的文件,如MANIFEST。基本上它只是一個ZIP存檔,有一些限制。

DEX(Dalvik的可執行)

DEX是二進制文件格式,所以它被編譯。我們可以說,.dex文件適用於DVM(Dalvik虛擬機),類似於.class JVM的文件。

DEX文件格式實際上是由來自Android SDK的dex編譯器從java CLASS文件生成的。該編譯器將JVM字節碼轉換爲DVM字節碼,並將所有類文件放入一個dex文件。

APK(Android應用程序包)

APK是專爲在其平臺上發佈Android應用程序文件格式。它與JAR格式有一些相似之處。再次,它只是簡單的ZIP壓縮文件,但APK文件具有預定義的特定結構。例如,它總是必須包含名爲的AndroidManifest.xml文件等等。此外,該軟件包以dex格式彙總已編譯的類。

AAR

AAR是Android庫項目的二進制發行版。它與APK具有相似的結構。

+0

謝謝,真的很有幫助.AAR信息大多數人都不知道 –