web-dev-qa-db-ja.com

AndroidでのAAR、JAR、DEX、APKの違い

Androidシステムまたは開発環境で、AAR、JAR、DEX、およびAPKファイルの違いは何ですか?それぞれの目的は何ですか?

AFAIK、JARは、(Javaのような).classファイルのコレクションのようなものです。

AARはJARファイル+リソースです。しかし、その使用例は何ですか? Androidの開発ライブラリを配布するために使用されますか?

APKは.debや.rpmなどのパッケージに似ているようです。 Androidにアプリケーションをインストールする唯一の方法ですか?

DEXファイルについてはどうですか?コンパイルされたアプリケーション...しかし、JARまたはAARファイルとの違いは何ですか?

さらに、Android用の.so(つまりネイティブコード)ファイルを配布する場合、それを行うための最良の方法は何ですか?

21
sapito

JAR(Javaアーカイブ)

JARは、プラットフォーム上のJavaアプリケーションの配布用に設計されたパッケージファイル形式です。コンパイルされたJavaクラスファイル+ MANIFESTなどのいくつかのファイルが含まれています。基本的にはいくつかの制限付きのZipアーカイブのみ。

DEX(ダルビック実行可能ファイル)

DEXはバイナリファイル形式であるため、コンパイルされます。 。dexファイルはDVM(Dalvik Virtual Machine)用で、JVM用の。classファイルのようなものと言えます。

DEXファイル形式は、Javaから生成されます。Android SDKからのdexコンパイラーによるCLASSファイルdexファイル。

APK(Androidアプリケーションパッケージ)

APKは、プラットフォーム上のAndroidアプリケーションを配布するために設計されたファイル形式です。JAR形式といくつかの類似点があります。繰り返しますが、これは単なるZipアーカイブですが、APKファイルには事前定義された特定の構造があります。たとえば、常にAndroidManifest.xmlという名前のファイルが含まれている必要があり、このパッケージはコンパイルされたクラスをdex形式で集約します。

AAR

AARは、Android Library Projectのバイナリディストリビューションです。APKと同様の構造を持っています。

29
hradecek

JARは、(Javaのような).classファイルのコレクションのようなものです。

それはis a Java JAR。

AARはJARファイル+リソースです

正しい。

しかし、その使用例は何ですか? Androidの開発ライブラリを配布するために使用されますか?

正しい。

APKは.debや.rpmなどのパッケージに似ているようです。 Androidにアプリケーションをインストールする唯一の方法ですか?

一般的に言えば、はい。

DEXファイルについてはどうですか?

DEXファイルには、アプリケーションコードを表すクロスコンパイルされたDalvikバイトコードが含まれています。開発者write Java、ただしAndroid runs Dalvikバイトコード。APKには、これらのバイトコードを表すDEXファイルがあります。

さらに、Android用の.so(つまりネイティブコード)ファイルを配布する場合、それを行うための最良の方法は何ですか?

「配る」という意味がわかりません。

「アプリの配布」を意味する場合は、.soファイルはAPKにあります。

「他の開発者向けのライブラリとして配布する」という意味の場合は、AARを使用するか、Androidプロジェクトをソース形式で使用してください)。

18
CommonsWare