Skip to content

Most visited

Recently visited

navigation

Android ライブラリの作成

Android ライブラリは、構造上は Android アプリ モジュールと同じです。ソースコード、リソース ファイル、Android マニフェストなど、アプリのビルドに必要なものはすべて含めることができます。ただし Android ライブラリをコンパイルすると、端末で実行する APK ではなく、Android アプリ モジュールの依存関係として使用できる AAR(Android Archive)ファイルになります。JAR ファイルとは異なり、AAR ファイルには Android リソースとマニフェスト ファイルを含めることができるため、Java クラスやメソッド以外に、レイアウトやドローアブルといった共有リソースにもバンドルできます。

ライブラリ モジュールは、次のような場合に便利です。

どちらの場合も、再利用したいファイルをライブラリ モジュールに移動して、各アプリ モジュールの依存関係としてライブラリを追加するだけです。このページでは、両方のケースについて説明します。

ライブラリ モジュールを作成する

プロジェクトで新しいライブラリ モジュールを作成するには、次の手順を実行します。

  1. [File] > [New] > [New Module] をクリックします。
  2. 表示された [Create New Module] ウィンドウで、[Android Library]、[Next] の順にクリックします。

    Java ライブラリを作成することもできます。この場合は従来の JAR ファイルが作成されます。JAR ファイルは多くのプロジェクトで、特に他のプラットフォームとコードを共有したい場合に便利ですが、Android リソースやマニフェスト ファイルを含めることはできません。そのため、Android プロジェクトでコードを再利用するには Android ライブラリのほうがはるかに便利です。よって、このガイドでは Android ライブラリの作成に焦点を当てて説明します。

  3. ライブラリの名前を指定し、ライブラリのコードの最小 SDK バージョンを選択して、[Finish] をクリックします。

Gradle プロジェクトの同期が完了したら、左側の [Project] パネルにライブラリ モジュールが表示されます。新しいモジュールのフォルダが表示されない場合、[Android] ビューが表示されていることを確認してください。

アプリ モジュールをライブラリ モジュールに変換する

既存のアプリ モジュールと再利用したいすべてのコードが用意できたら、次の手順でライブラリ モジュールに変換できます。

  1. 既存のアプリ モジュールの build.gradle ファイルを開きます。ファイルの先頭に次のように記載されています。
    apply plugin: 'com.android.application'
    
  2. プラグインの割り当てを次のように変更します。

    apply plugin: 'com.android.library'
    
  3. [Sync Project with Gradle Files] をクリックします。

これだけです。モジュールの全体的な構造は同じですが Android ライブラリとして機能します。また、ビルドすると APK ではなく AAR ファイルが作成されます。

ライブラリを依存関係として追加する

Android ライブラリのコードを別のアプリ モジュールで使用するには、次の手順を実行します。

  1. 次の 2 つのうちいずれかの方法でライブラリをプロジェクトに追加します(同じプロジェクト内でライブラリ モジュールを作成済みの場合は、既にプロジェクト内に存在するためこの手順はスキップしてください)。
    • コンパイルした AAR(または JAR)ファイルを追加する:
      1. [File] > [New Module] をクリックします。
      2. [Import .JAR/.AAR Package]、[Next] の順にクリックします。
      3. AAR または JAR ファイルの場所を入力し、[Finish] をクリックします。
    • ライブラリ モジュールをプロジェクトにインポートする:
      1. [File] > [New] > [Import Module] をクリックします。
      2. ライブラリ モジュールのディレクトリの場所を入力し、[Finish] をクリックします。

      ライブラリ モジュールがプロジェクトにコピーされ、ライブラリ コードを編集できるようになります。ライブラリ コードの 1 つのバージョンを維持したい場合はこの方法は適さないため、上記の手順でコンパイルした AAR ファイルをインポートする必要があります。

  2. settings.gradle ファイルの先頭にライブラリが記載されていることを確認します。ライブラリ名が "my-library-module" の場合は次のようになります。
    include ':app', ':my-library-module'
    
  3. アプリ モジュールの build.gradle ファイルを開き、次のスニペットのように dependencies ブロックに新しい行を追加します。
    dependencies {
        compile project(":my-library-module")
    }
    
  4. [Sync Project with Gradle Files] をクリックします。

上記の例では、build.gradle ファイルが存在するモジュールは、my-library- module という Android ライブラリ モジュールとビルドの依存関係があります。

アプリ モジュールからこの Android ライブラリのすべてのコードやリソースにアクセスできるようになり、ライブラリの AAR ファイルはビルド時に APK にバンドルされます。

または、AAR ファイルを個別に共有する必要がある場合は、project-name/module-name/build/outputs/aar/ に AAR ファイルがあります。[Build] > [Make Project] をクリックしてこのファイルを再生成することもできます。

公開するリソースを選択する

ライブラリ内のリソースはデフォルトですべてパブリックになります。すべてのリソースを暗黙的にプライベートにするには、少なくとも 1 つの属性をパブリックとして定義する必要があります。リソースには、プロジェクトの res/ ディレクトリにあるすべてのファイル(イメージなど)が含まれます。内部での利用に限定したリソースにライブラリのユーザーがアクセスできないようにするには、1 つ以上のパブリック リソースを宣言して、この自動プライベート指定の仕組みを利用する必要があります。

パブリック リソースとして宣言するには、宣言をライブラリの public.xml ファイルに追加します。これまでパブリック リソースを追加したことがない場合は、ライブラリの res/values/ ディレクトリ内に public.xml ファイルを作成する必要があります。

次のサンプル コードでは、mylib_app_name および mylib_public_string という名前のパブリック文字列リソースを作成しています。

<resources>
    <public name="mylib_app_name" type="string"/>
    <public name="mylib_public_string" type="string"/>
</resources>

ライブラリを使用するデベロッパーに表示したいリソースは、すべてパブリックにしてください。たとえば、v7 appcompat ライブラリ内のほとんどのリソースはプライベートですが、マテリアル デザインをサポートするため、ツールバー ウィジェットを制御する属性はパブリックになっています。

暗黙的に属性をプライベートにすると、ライブラリの内部リソースがコード補完候補としてライブラリのユーザーに表示されなくなります。さらに、ライブラリのクライアントに悪影響を及ぼすことなくプライベート リソースの名前変更や削除が可能になります。プライベート リソースはコード補完と Theme Editor から除外され、プライベート リソースを参照しようとすると Lint で警告が表示されます。

開発時の考慮事項

ライブラリ モジュールとそれに依存するアプリを開発するときは、次の動作と制限に注意してください。

ライブラリ モジュールへの参照を Android アプリ モジュールに追加すると、各参照の相対的な優先度を設定できます。ビルド時に、優先度の低いライブラリから高いライブラリの順に、1 つずつアプリに統合されます。

AAR ファイルの仕組み

AAR ファイルのファイル拡張子は .aar で、Maven アーティファクト タイプにも aar を指定する必要があります。ファイル自体は、次の必須エントリを含む zip ファイルです。

また、AAR ファイルには次のオプション エントリを 1 つ以上含めることができます。

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Follow Google Developers on WeChat

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience.
(Sep 2017 survey)