2種類のaarファイル作成方法とその違い

## 背景
AndroidStudioでaarファイルを作成しようとした際、利用できる2つの方法のうち片方では成功、片方では失敗となることがありました。
同じことをしていると思っていましたが何かが違うようだということで、その違いについて調べました。

・環境
AndroidStudio：Android Studio Bumblebee | 2021.1.1 Patch 1
Gradle：7.2


## aarファイルとは
拡張子.aar、aar（Android ARchive）形式のライブラリファイルで、Androidアプリモジュールの依存関係として使用されるファイルです。
Androidライブラリモジュールをコンパイルすることで作成できます。
単体では動きませんが簡単に追加や交換ができ、必要なaarファイルを組み込むことで簡単に複数パターンのアプリを展開できる特徴があります。
役割のイメージとしては、コッペパンの中に入れるあんこやバター、ジャムがaarファイルです。
コッペパンはジャムだけを入れて食べる場合もあれば、あんことバターを入れて食べる場合もあるように、aarファイルもアプリに1つだけを追加する場合もあれば、複数を追加する場合もあります。

AndroidライブラリモジュールはAndroidStudio上タブの[File]>[New]>[New Module]から作成できます。
詳しくはこちらをご参照ください。
[developer：Androidライブラリの作成](https://developer.android.com/studio/projects/android-library?hl=ja)


## aarファイルの作成方法
aarファイルにしたいライブラリモジュールは[New Module]等を使用して作成済みとし、以下2つの方法でaarファイルの作成を試みます。

- [Make Module]から行う方法
- Configurationから行う方法

今回は、mylibraryという名前のライブラリモジュールのaarファイルを作成します。

### [Make Module]から行う方法
1. 左側のProjectウィンドウでビルドしたいモジュールを選択する
1. 上タブの[Build]>[Make Module]をクリックする
![make_module.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1396691/ecc8681b-809d-bfc2-6c88-af2b6a8f7e95.png)

これで、mylibrary/build/outputs/aarの中にmylibrary-debug.aarが作成されます。

### Configurationから行う方法
1. 画面中央のプルダウンからaarファイルを作成したいライブラリモジュールを選択
1. 実行ボタンをクリック



プルダウンに選択したいライブラリがない場合は以下の方法で行います。
1. 画面中央のプルダウンからEdit Configurationsを選択
![select_Edit_Configurations.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1396691/2ce6ffd4-5896-b307-e03d-e17c9ccfb118.png)
1. Gradle projectにライブラリ名、Tasksにbuildを入力してOKをクリック
![run_debug_configurations.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1396691/e5a9c5ff-9440-00f4-f2c5-ff065ab47405.png)

1. プルダウンからライブラリが選べるようになっているため、選択して実行ボタンをクリック
![run.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1396691/6c6911b0-2b57-96e9-4803-8621b9e75d89.png)

これで、mylibrary/build/outputs/aarの中にmylibrary-debug.aarとmylibrary-releanse.aarが作成されました。

Run/Debug Configurationsでの設定については以下もご参照ください。
[IntelliJ IDEA：Run/Debug Configuration: Gradle](https://www.jetbrains.com/help/idea/2021.3/run-debug-gradle.html)

## debug.aarとreleanse.aar
ここまでを整理して、先ほどの2つのaarの作成方法には以下の違いがあると分かりました。
- [Make Module]から行う方法：debug.aarだけが作成される
- Configurationから行う方法：debug.aarとrelease.aarが作成される

このdebug.aarとrelease.aarについて、これらは名前の通り、デバッグ用かリリース用かという違いがあります。
- debug：デバッグができる
- release：デバッグはできないが、圧縮と難読化が行われる

release.aarはより配布することに特化しているようですね。

先ほど[Make Module]から行う方法ではdebug.aarのみが作成されていましたが、こちらはAndroidStudioのビルドバリアントの設定が関わっており、release.aarのみを作成することもできます。
上タブの[Build]>[Select Build Variant…]をクリックし、設定をdebugにするとdebug.aarだけが、releaseにするとrelease.aarだけが作成されます。

## まとめ
結論として、2つのaarファイル作成方法にはdebug.aarとrelease.aarの2つが作成されるか、片方だけが作成されるかという違いがありました。
以前私がaarファイルの作成を試みて成功/失敗した際には、Configurationから行う方法で作成ができなかったため、release.aarの作成がうまくいっていなかったのだろうと思います。
作成したいaarファイルを見極めて、必要に応じて使い分けていきましょう。


## 参考文献
[developers：Androidライブラリの作成](https://developer.android.com/studio/projects/android-library)
[developers：ビルドを設定する](https://developer.android.google.cn/studio/build)
[developers：アプリをビルドして実行する](https://developer.android.com/studio/run?hl=ja#reference)
[developers：ビルドバリアントを設定する](https://developer.android.google.cn/studio/build/build-variants?hl=ja)
[developers：Build Type](https://developer.android.google.cn/reference/tools/gradle-api/7.1/com/android/build/api/dsl/BuildType?hl=ja)