第1回Android Studio超入門#4 -ライブラリを導入してみる-


## はじめに

ここではリモートリポジトリに登録されているライブラリや、リモートリポジトリに登録されていないライブラリを使えるようにしてみます。なお、ライブラリの内容については触れません。

## ApacheCommonsLangのライブラリを導入してみる

Apache Commonsのライブラリとは、ちょっとした便利な処理がたくさんつまったライブラリですが、Central Repositoryに[公開されている](http://mvnrepository.com/artifact/commons-lang/commons-lang)ので、導入してみます。

app/build.gradleのdependencies内に以下の行を追加します。

```
compile 'commons-lang:commons-lang:2.6'
```

全体としてはこのようになるかもしれません。

```
dependencies {
    compile 'com.android.support:support-v4:19.1.0' // ①
    compile 'com.android.support:appcompat-v7:19.1.0' // ②
    compile 'commons-lang:commons-lang:2.6'
}
```

なお、ここに書かれた①の行はsupport-v4パッケージの導入を意味しています。Eclipseでは、support-v4.jarをlibsディレクトリに入れていたかと思いますが、このように書くことによって、jarを取り込むことが可能です。②はappcompat-v7パッケージの導入をしています。

### Syncする

Android StudioではAutomatically Buildはサポートしていないため、編集しただけでは同期されていません。なので同期を行います。Gradle関係のファイルを編集した場合はこのようなバーが表示されます。

![スクリーンショット 2014-09-27 2.40.18.png](https://qiita-image-store.s3.amazonaws.com/0/16620/14114181-6d26-7194-4077-0ed0c3d88fb6.png "スクリーンショット 2014-09-27 2.40.18.png")

これが表示されている場合は、同期がとれていない合図ですので、そのバーの一番右にある`Sync`ボタンを押しましょう。今追加したApacheCommonsLangのライブラリが取り込まれるはずです。

画面中央下のプログレスで現在の実行状況がわかります。プログレスが終了したら、実行完了の合図です。

![スクリーンショット 2014-09-27 3.06.22.png](https://qiita-image-store.s3.amazonaws.com/0/16620/7d34cd56-5137-4a61-f52a-889c32205c0a.png "スクリーンショット 2014-09-27 3.06.22.png")

とりこまれたら、使えるか試してみましょう。

![スクリーンショット 2014-09-27 3.09.01.png](https://qiita-image-store.s3.amazonaws.com/0/16620/5e324b58-f226-efd7-3381-eb6a2d411d7a.png "スクリーンショット 2014-09-27 3.09.01.png")

無事、ライブラリのクラスメソッドである`StringUtils.isEmpty()メソッドが使えて、Importが成功していることがわかります。（上の処理自体に意味は無いです…）

これで無事成功です。もちろんちゃんとプログラムを書いて実行しても成功します。

## Volleyを導入してみる

Volleyといえば、去年にGoogleが公開した非同期通信のライブラリとして話題になりましたが、そのVolleyをAndroid Studioで導入してみます。

### volleyのディレクトリを取得

Googleが公開している場所はGoogleSourceなので、まずは`git clone https://android.googlesource.com/platform/frameworks/volley`コマンドをプロジェクトルートで実行し、ライブラリプロジェクトを取得します。

画面左下の`Terminal`を押すと、Android Studio内でターミナルが起動できますのでこちらでやってみてもいいかと思います。

![スクリーンショット 2014-09-27 3.20.24.png](https://qiita-image-store.s3.amazonaws.com/0/16620/3e36a4eb-8c56-a1a4-64ea-18f97ac0f3cf.png "スクリーンショット 2014-09-27 3.20.24.png")

※gitがインストールされていないか、PATHが設定されていないと実行することができません。MacでHomebrewを使っている人は`brew install git`を実行し、gitをインストールしてから再度行ってみてください。Homebrewを使っていない人は[Gitの公式ホームページ](http://git-scm.com/downloads)から、ご自分のOSのものをインストールしてください。インストールウィザードの途中で、`ターミナルやコマンドプロンプトでgitコマンドが使えるようにするか`という質問が（多分英語で）出てきますので、ターミナルやコマンドプロンプトで実行できるようにしておいてください。

完了すると、プロジェクトルートにvolleyディレクトリができます。

![スクリーンショット 2014-09-27 3.22.59.png](https://qiita-image-store.s3.amazonaws.com/0/16620/d1958312-fe7f-b0ce-b02d-4ebc27716147.png "スクリーンショット 2014-09-27 3.22.59.png")

### volleyディレクトリをライブラリモジュールと認識させる

ここで一度volley内のJavaファイルのアイコンと、app内のJavaファイルのアイコンを比べて見てみましょう。

![スクリーンショット 2014-09-27 3.26.15.png](https://qiita-image-store.s3.amazonaws.com/0/16620/1ba80504-dfee-1562-d525-ceba28707cfe.png "スクリーンショット 2014-09-27 3.26.15.png")

app内のMainActivity.javaには`Cマーク`が付いているのに対し、volley内の複数のJavaファイルには全て`禁止マーク`のようなものがついています。これは、volley内のJavaファイルは.javaではあるもののJavaファイルだと認識されていない証拠です。今の状態だとコンパイルも行われません。なので、プロジェクトルートの`settings.gradle`に以下のように追記します。

```
include ':app', ':volley'
```

/を:に置換して記述しています。

そして、例によってSyncバーが表示されるので、Syncします。

![スクリーンショット 2014-09-27 2.40.18.png](https://qiita-image-store.s3.amazonaws.com/0/16620/14114181-6d26-7194-4077-0ed0c3d88fb6.png "スクリーンショット 2014-09-27 2.40.18.png")

こんなエラーやこんなエラーが表示されます。

![スクリーンショット 2014-09-27 3.34.25.png](https://qiita-image-store.s3.amazonaws.com/0/16620/d3c53405-daaf-5a05-44d9-dfff9f4a5b24.png "スクリーンショット 2014-09-27 3.34.25.png")

![スクリーンショット 2014-09-27 3.36.38.png](https://qiita-image-store.s3.amazonaws.com/0/16620/86a81b68-a08e-f38f-a1a9-6443d2800f05.png "スクリーンショット 2014-09-27 3.36.38.png")

これは、残念ながらvolley内にあるbuild.gradleの`build Tools revision`が古過ぎるため（下）、もしくはインストールされていないため（上）に発生します。メンテナンスされてなさそうです。なので、`volley/build.gradle`の該当箇所を最新のバージョンに更新します。

```volley/build.gradle
buildToolsVersion = 19
```

を

```volley/build.gradle
buildToolsVersion = 20
```

にします。そして再度、バーのSync（一度失敗したのでTry Againになってる）を押します。

完了すると、無事volleyがJavaのプロジェクトファイルだと認識されました！CマークやIマークになっています。

![スクリーンショット 2014-09-27 3.44.11.png](https://qiita-image-store.s3.amazonaws.com/0/16620/187d0b45-3d5a-7d69-f69c-81eb49055290.png "スクリーンショット 2014-09-27 3.44.11.png")

### アプリケーションモジュールで使えるようにする

volleyモジュールがライブラリモジュールとして認識されたので、最後にアプリケーションモジュール（アプリ本体）で使えるように設定します。

`app/build.gradle`のdependencies内に以下の行を追加します。

```
compile project(':volley')
```

全体としてはこのようになるかもしれません。

```
dependencies {
    compile 'com.android.support:support-v4:19.1.0'
    compile 'com.android.support:appcompat-v7:19.1.0'
    compile 'commons-lang:commons-lang:2.6'
    compile project(':volley')
}
```

再び、Gradleのビルドファイルを編集したのでSync（もしくはTry Again）をおしてみてください。ここでSyncが完了すると、アプリケーション本体のapp内のソースコードでvolleyを使うことができるようになります。

![スクリーンショット 2014-09-27 2.43.12.png](https://qiita-image-store.s3.amazonaws.com/0/16620/55d8be30-9926-7c8b-6d01-0953bf356699.png "スクリーンショット 2014-09-27 2.43.12.png")

無事完了です。お疲れ様でした。

### ちなみに…

非公式ではありますが、VolleyのミラーをCentral Repositoryにあげてくれている方がいますので、そちらを参照すれば、ApacheCommonsのように１行でライブラリのインポート作業が終了します([android-volley](https://android.googlesource.com/platform/frameworks/volley/))。