業務の中で、ライブラリモジュール(.aar)を導入しました。

そういえばライブラリ作ったことないな……。
ということで勉強がてら、基礎から学び直してみました!
Androidライブラリの構成
Androidライブラリは、構造上はAndroidアプリモジュールと同じです。
- ソースコード
- リソースファイル
- Androidマニフェスト
上記のようなファイルを全て含めることができます。
ですので、レイアウトや画像ファイル(drawable)のような共有リソースを統合することが可能です。
ただし、AndroidライブラリをコンパイルするとJARではなく、AAR(AndroidARchive)ファイルとして出力されます。
- JARファイル
- Javaのクラスやメソッドを持つライブラリリソース
- AARファイル
- JARファイルに加えて、Androidリソース(マニフェストやActivityなど)を加えられる
Androidライブラリの使いどころ
AARを導入するユースケースは下記のような場面があります。
- Activity、Service、レイアウトなど共有のコンポーネントを使用する複数のアプリをビルドする場合
- 無償版・有償版など複数のAPKバリアントに存在するアプリをビルドするときに、同じコアコンポーネントを必要とする場合
どちらにしても、主な手順は下記の通りになります。
- 再利用するファイルをライブラリモジュールに移動する
- 各アプリのモジュール依存関係としてライブラリを追加する
それでは、実際にライブラリモジュールを作成して導入していく手順をご紹介していきます!
①ライブラリモジュールを新規作成する
適当なプロジェクトを作成する
前提として、ライブラリ作成用のプロジェクトを新規作成しなければなりません。
新規作成すると、appモジュールを持ったプロジェクトが作成されます。
Androidライブラリ(AARを作成する)
Fileメニュー > New > NewModuleを選択します。
Moduleダイアログで、Android Libraryを選択し、Nextを押下
ライブラリ名、最小SDKバージョンを指定し、Finishを押下
Gradleの同期が完了したら、画面左側のProjectビューに、モジュールが追加されます。
(BuildVariantにも)
今回はとりあえず「testLibrary」という名称にして進めていきます。
②アプリモジュールをライブラリモジュールに変換する
再利用するファイルが含まれるモジュールは、下記の手順でライブラリモジュールに変換可能です。
- モジュールレベルのbuild.gradleを開く
- applicationIdを削除する(これを定義できるのはアプリモジュールのみなので)
- ファイル先頭の
apply plugin: 'com.android.application'
をapply plugin: 'com.android.library'
に変更する
モジュールの構造は同じですが、Androidライブラリとして機能するようになります。
ビルドするとAPKではなく、AARファイルが出力されます。
ライブラリモジュールをビルド(出力)する
- ①の場合
- Build > Make Moduleを押下する
- ②の場合
- Projectビューで、ライブラリモジュールを選択した状態で、Build > Build APKを押下する。
以下のパスに出力されます。
意外と分かりにくいところにあるので、要注意!
AarTestProject/testLibrary/build/outputs/aar
プロジェクト名/ライブラリ名/build/outputs/aar
ライブラリモジュールを依存関係として追加(インポート)する
Androidライブラリを別のアプリモジュールで使用する手順は、2つあります。
※同じプロジェクト内でライブラリモジュールを作成済みの場合は、プロジェクト内に存在するため必要ありません。
①コンパイル済みのライブラリを追加する
- File > New > New Module を選択
- Import .JAR/.AAR Package を選択し、Nextを押下
- AARまたはJARのファイル場所を選択し、Finishを押下
②ライブラリモジュールをプロジェクトにインポートする
- File > New > Import Module を選択
- ライブラリモジュールのディレクトリ場所を選択し、Finishを押下
①は、ライブラリコードの単独バージョンを維持(編集不可に)したい場合に実施する必要があります。
②では、ライブラリモジュールがプロジェクトにコピーされ、ライブラリコードをガリガリ変更できます。
【実際に試した方法】
- 一旦、debugとreleaseを分けて配置しておく。
- ①の手順を試す
- setting.gradleの先頭にライブラリ名が記述されていることを確認する
- appモジュールの
build.gradle
を開き、dependencies
ブロックに追加する Sync Project with Gradle Files(画面右上の象さんマーク)
を押下
特定のビルドバリアントで必要な場合は、implementation
ではなく、[buildVariantName]Implementation
を使用します。
詳細は以下の記事を参照してください。

参考文献
