46
47

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-09-26

はじめに

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

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

Apache Commonsのライブラリとは、ちょっとした便利な処理がたくさんつまったライブラリですが、Central Repositoryに公開されているので、導入してみます。

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

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

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

スクリーンショット 2014-09-27 3.06.22.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

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

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

スクリーンショット 2014-09-27 3.22.59.png

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

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

スクリーンショット 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

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

スクリーンショット 2014-09-27 3.34.25.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

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

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

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

ちなみに…

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

46
47
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
46
47

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?