1. ホーム
  2. java

[解決済み] Android Archive Library (aar)と標準的なjarの比較

2022-05-09 06:36:14

質問

Androidアプリの標準ビルドシステムとしてGradleが新たに採用されるという記事をいくつか読みました。標準的なJavaの開発から来た私は、通常、Gradleに依存しています。 ジャー ファイルを使ってプロジェクトをビルドします。しかし、Androidには パッケージと同等である。 dll のように、Windows OSのファイル こちら :

まず、Androidプラットフォームでは、アプリケーションレベルの「共有ライブラリ」が認められていないことを認識する必要があります。伝統的な」プログラミング言語プラットフォーム、C、C++、Javaなどでは、ランタイム・ライブラリを共有する仕組みがあります。(例:WindowsのDLL、UnixのDSO、JVMのJarなど). ところが、Androidでは、Googleか端末メーカーでない限り、それができません(下記脚注1参照)。アプリケーション開発者としては、これは根本的な制約になりえます。ビルド時と実行時の両方でコードを「共有」または「再利用」することは、ソフトウェア工学の実践において非常に重要な部分です。Androidでは、前述の制限のため、これはかなり困難です(不可能ではありませんが、より困難なだけです)。

しかし、このコンセプトには疑問があります。つまり、開発者はどのような場合に を使用することができるのでしょうか?この依存関係は、あるSDKの最小バージョンに厳格化されているのでしょうか?

例えば、あるプロジェクトではCOMポートにアクセスするのですが、そのCOMポートには NDKプリコンパイル .so のライブラリを使用します。このユーティリティを共有したい場合、aarを作成しなければならないのでしょうか?

解決方法は?

AAR ファイルは、より Jar よりも Dll は、次のような理由からです。

Dll は、アプリケーション間で共有することができ、一方 AAR とjarは は、アプリと一緒にパッケージ化されます。

AARJar s:

との主な違いは、以下の通りです。 JarAAR は、その AAR を含む。 などのリソースがあります。 layouts, drawables などがあります。これによって は、自己完結型のビジュアルコンポーネントを作成することができます。例えば 同じログイン画面を使用する複数のアプリで Jar を使用することができます。 クラスは共有できても、レイアウトやスタイルなどは共有できず、やはり を複製しています。とは AAR は、すべてが1つのきちんとしたパッケージにバンドルされています。

結論から言うと AAR は大きな一歩です。



同様の試みは apk-lib のように、現在では廃れています。 AAR の方がはるかに優れています。