0

パッケージ化して Android 開発者に配布する必要がある Android ライブラリを開発する必要があります。Java クラスとリソース (アイコンなど) の両方があります。

そのようなライブラリを配布する最良の方法について疑問に思っています。多くの有名なライブラリがさまざまな形式で配布されていることは周知のとおりです。

  • ActionBAR Sherlock - ZIP または APKLIB
  • フラリー - JAR

私の前提条件:

  1. ソースを配布できません - コンパイルされた Java クラスとリソースのみが許可されています
  2. 私の目標は、クライアント プロジェクトの指示との統合をできるだけシンプルにすることです。たとえば、依存関係として Maven/Gradle の 1 行と、アプリ内でそれを使用するための数行のコードです。
  3. すべてのビルド システムを尊重する必要があります。NBS を使用するシステム、android-maven-plugin を使用するシステム、レガシー ANT を使用するシステムです。

私の最初のアイデアは、このライブラリを APKLIB (Maven) および AAR (NBS) として配布することでしたが、ANT がサポートされていないことに気付きました。

質問:

  1. APKLIB と AAR は、プレーンな Java ソースではなく、コンパイルされたクラスとリソースのみを持つことができますか?
  2. ANT用にコンパイルされたAndroidライブラリプロジェクトを配布するには? ZIPとして?
  3. ライブラリ用の R の生成についてはどうでしょうか。

ご提案ありがとうございます。

4

1 に答える 1

2
  1. APKLIBには、コンパイルされたファイルではなく、ソース、ライブラリ、およびリソースのみが含まれることになっています。補完的なAAR 形式は「Android ライブラリ プロジェクトのバイナリ配布」であり、ソースを含まない必要があります。 編集:ただし、APKLIB にソース コードの代わりにコンパイル済みのクラスを含めるために使用できるトリックがあります。ソース コードをコンパイルし、ディレクトリではなく APKLIB 内に配置します。次に、すべてのファイルをダミー ファイルに置き換えます。.classclasses.jarlibs/<library-name>.jarbinsrc

  2. コンパイル済みの Ant 用 Android ライブラリ プロジェクトを AAR として配布できますが、使用する際にはいくつかの点に注意する必要があります。srcAntは、抽出された AAR ファイル内のディレクトリを明示的に探しますが、何もありません。Ant はディレクトリclasses.jar内を探しますbinが、それは抽出された AAR ファイルのルートにあります。src空のディレクトリを作成して にコピーclasses.jarすることで、この問題を回避できますbin/classes.jarpost-retrieve-artifactこれは、AAR アーティファクトを取得した後の Ivy ステップで行うこととまったく同じです。編集:ant cleanこれには、が削除されるという欠点があります。上記のように、ディレクトリの一部としてパッケージ化されbin/classes.jarた APKLIB を使用する方がよいでしょう。jarlibs

  3. APKLIB も AAR も、コンパイルされたRクラスに付属することは想定されておらず、どちらもディレクトリ内の元のリソースとともに出荷されresます。さらに、AAR には、R.txtすべてのリソースを一覧表示するファイルが含まれている必要があります ( による出力としてaapt --output-text-symbols)。

于 2014-01-28T11:15:54.007 に答える