Android Studio で AARファイルを作って読み込む

# AARとは

AARファイルとはAndroidプロジェクト用のライブラリをまとめたフォーマットです。
似たようなものにjarが存在しますが、AARは Android リソースと Manifest ファイルを含めることができます。
但し AAR は Android Studio 専用のライブラリです。
他の環境で使う場合はjarを使いましょう。

# AARの作り方

AARファイルを一から作る場合、モジュール単体のプロジェクトは作れないので一度適当なAndroidプロジェクトファイルを作って置きそこからモジュールを新規作成します。
下記の様に適当なAndroidプロジェクトを作ってからAARを作ってみます。

> Application name: MakeLibProject
> Company domain: example.hoge.co.jp
> Minimum SDK: 19
> 
> Activity: Empty Activity


`File -> New -> New Module`を選択
![new-module.png](https://qiita-image-store.s3.amazonaws.com/0/112253/632a4371-e764-9bb9-783b-84a5abbf410d.png)

`Android Library`を選択
![select-module.PNG](https://qiita-image-store.s3.amazonaws.com/0/112253/6e064ee7-398e-1381-9880-2d67686a53d1.png)

必要項目を記入
![configure-module.PNG](https://qiita-image-store.s3.amazonaws.com/0/112253/882e40b7-ff01-74da-4df8-8068b56039be.png)

Application/Library name
	strings.xmlのapp_nameに反映されるだけで特に意味はなさそう(但し入力しないと先に進めない)

Module name
	デフォルトの場合は`Application/Library name`を小文字にしてスペースを除去した文字列が入る。
	AARファイルの名前やライブラリのトップフォルダ名にもなるので結構大事。

Package Name
	AARファイルを使用する(import)する時に必要。
	色んな人に使ってもらう事になるのでめちゃめちゃ大事(周りに見せないなら適当でもOK)
	前に自分は`com.super.mekemeke.fire.sample`とか適当に作って公開して恥をかきました。

全てを記入したら`Finish`を押すと新しいプロジェクトが追加されます。
![new-pro.PNG](https://qiita-image-store.s3.amazonaws.com/0/112253/eb7de7e0-40f3-5b41-7387-64c385010d99.png)

`Module name -> java-> パッケージ`にカーソルをあわせる
![select-package.PNG](https://qiita-image-store.s3.amazonaws.com/0/112253/d9cc2e73-309f-ad3e-f111-ff8dbb5dadfe.png)

`左クリック -> New -> Java Class`を選択してファイルをつくる
![make-class.png](https://qiita-image-store.s3.amazonaws.com/0/112253/cba4c0bb-b1bf-8b66-2e11-2266c743b4ef.png)

実際の処理を書く
![sample-process.PNG](https://qiita-image-store.s3.amazonaws.com/0/112253/8f83d62e-3be3-3aa1-0392-02c19d795bda.png)

ライブラリのパッケージにカーソルを合わせて`Build -> Make Module 'モジュール名'`を選択
![Build.png](https://qiita-image-store.s3.amazonaws.com/0/112253/e7e28504-ca7e-599e-6a7c-14528469800f.png)

ライブラリのビルドが通ればOK(ライブラリは他に依存なく動く事が大事)



# 同一プロジェクトでAARを使用する

階層表示を`Project`に変更して`プロジェクト -> app -> build.gradle`を選択する
![gradle.PNG](https://qiita-image-store.s3.amazonaws.com/0/112253/ad86413a-e14d-4426-73f0-e3e8a5fc4e73.png)

`dependencies {....}`に`compile project(':モジュール名')`を追加する
![gradle-in.PNG](https://qiita-image-store.s3.amazonaws.com/0/112253/ce15152b-f88b-bc3c-15c6-45cf628f9451.png)

実際にプロジェクトの中で使用してみる
![gradle-in.PNG](https://qiita-image-store.s3.amazonaws.com/0/112253/83b185fd-0ba9-3111-f2c0-4bce365bba37.png)


# 新しいプロジェクトでAARを使用する

他の人が作ってくれたaarファイルを自分のプロジェクトで使用する方法です。
Android Studio の`File- > New -> Import Module`でAARをインポートする方法ではなく手動で入れる方法を記述します。

`sdk-core-1.5.0.1.aar` と言うAARファイルを使う流れで説明します。


プロジェクトの直下(appフォルダと同じ階層)に`sdk-core`フォルダを作る。
![aar-4.PNG](https://qiita-image-store.s3.amazonaws.com/0/112253/a8cb2d67-bad3-49ed-3131-32ef8ce29ff0.png)


フォルダにaarファイルを入れる。
![aar-1.PNG](https://qiita-image-store.s3.amazonaws.com/0/112253/d7db0764-5bd6-1b38-b7a8-debc69cd32a1.png)

aarファイルと同じ階層に`build.gradle`と言う名前のファイルを作る。
![aar-2.PNG](https://qiita-image-store.s3.amazonaws.com/0/112253/de9ce92e-3052-6157-8c28-8eacf0a4c1b4.png)


`build.gradle`をテキストエディタで開いて以下の内容を記述する(ファイルの拡張子を忘れないように)
![aar-3.PNG](https://qiita-image-store.s3.amazonaws.com/0/112253/77c8579e-fd5c-f99a-4325-4b05afe8a39e.png)

```
configurations.create("default")
artifacts.add("default", file('sdk-core-1.5.0.1.aar'))
task testClasses {}
```

`settings.gradle`にincludeするフォルダ名を追記する
![aar-5.PNG](https://qiita-image-store.s3.amazonaws.com/0/112253/41c0f48d-acc2-5862-6472-eb6428fa7cf0.png)

```
include ':app',  ':sdk-core'
```

![aar-6.PNG](https://qiita-image-store.s3.amazonaws.com/0/112253/743b44d6-ea1c-07da-2e04-8347d73f7830.png)


階層表示を`Project`に変更して`プロジェクト -> app -> build.gradle`を選択する
![gradle.PNG](https://qiita-image-store.s3.amazonaws.com/0/112253/ad86413a-e14d-4426-73f0-e3e8a5fc4e73.png)

`dependencies {....}`に`compile project(':フォルダ名')`を追加する
![aar-7.PNG](https://qiita-image-store.s3.amazonaws.com/0/112253/b1da13bc-5cb8-2843-d48b-fc9388c18aab.png)


```
dependencies {
    compile project(':sdk-core')    // ここではフォルダ名だよ

    ......(以下省略)
}
```


後はビルドを行えば普通に使えます。