読者です 読者をやめる 読者になる 読者になる

ひだまりソケットは壊れない

ソフトウェア開発に関する話を書きます。 最近は主に Android アプリ、Windows アプリ (UWP アプリ)、Java 関係です。

まじめなことを書くつもりでやっています。 適当なことは 「一角獣は夜に啼く」 に書いています。

Android Studio で Volley を使う

Android アプリ

以前、Android Studio で Volley を使う方法として 『一度 Eclipse にインポートして、build.gradle を生成しつつエクスポートするのが良さそう』 と書きました。

しかし、今ではもう build.gradle が Volley のプロジェクトに含まれていて上記記事の内容は古いので、改めて Android Studio で Volley を使う方法を書いておきます。 (ここに書いている方法は私が普段やっている方法です。 他にもっと良い方法があるかもしれません。)

前提知識

Android Studio を使ってアプリのビルドができて、ビルドツールとして Gradle が使われていることを知っていて、Git も普通に使える、ぐらいの知識を前提としています。

Volley が何であるかということはここでは説明しません。

環境など

  • Android Studio 0.3.0
    • ビルドツールは Gradle 1.8 *1
  • バージョン管理ツールとして Git を使用
  • 対象とする Volley のコミットは c69c01be6ed (2013-10-23 時点での master ブランチの最新コミット)

Volley の扱い

  • Volley は Git のサブモジュールとしてプロジェクトに追加する
  • Gradle 上の扱いとしてはサブプロジェクトとする

プロジェクトに Volley を追加する

プロジェクトの構成

プロジェクトは既に存在するものとします。 プロジェクト名は仮に VolleySample としておきます。 Git での管理も既に行われているものとします。

プロジェクトの構成は、Android Studio で新規プロジェクトを作ったときの構成です。 (マルチプロジェクト構成です。) 一部のファイルとディレクトリの構成を示すと、次のようになっているはずです。

VolleySampleProject
    VolleySample — メインとなるサブプロジェクト
        build.bradle — サブプロジェクト :VolleySample のビルドスクリプト
    build.gradle — プロジェクト全体のビルドスクリプト
    settings.gradle — プロジェクトの設定ファイル

Git のサブモジュールとして Volley を追加する

プロジェクトのトップディレクトリで、Git コマンドを使ってサブモジュールとして Volley を追加します。

$ git submodule add https://android.googlesource.com/platform/frameworks/volley modules/volley

配置場所はどこでもいいのですが、今回は modules/volley に置くことにしました。

Volley を Gradle プロジェクトのサブプロジェクトにする

settings.gradle に 1 行追加して、modules/volley をサブプロジェクトとします。

include ':VolleySample'
include ':modules:volley' // ← 追加

ビルドスクリプトを変更

最後に、ビルドスクリプトを変更してサブプロジェクト :modules:volley をビルドできるようにし、サブプロジェクト :VolleySample を :modules:volley に依存させます。

サブプロジェクト :modules:volley をビルドできるようにする

コミット c69c01be6ed 時点の Volley プロジェクトには build.gradle が入っているのですが、ビルドスクリプトの中にビルド時の依存関係が記述されていないので、このままではビルドできません。 ビルドできるようにするためにビルド時の依存関係を記述します。

サブモジュールの中の build.gradle はいじりたくないので、トップレベルのビルドスクリプトにサブモジュール用の記述を行います。

// Top-level build file where you can add configuration options common to all sub-projects/modules.

/*
 * サブプロジェクト Volley 用のビルドスクリプト
 */
project(':modules:volley') {
    buildscript {
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:0.6.+'
        }
    }
}
サブプロジェクト :VolleySample を :modules:volley に依存させる

最後に、:VolleySample から :modules:volley への依存関係を記述します。

VolleySample/build.gradle の中の dependencies ブロックの中に、以下のように記述します。

dependencies {
    // ... (略) ...
    compile project(':modules:volley') // ← この行を追加する
}

これでサブモジュール :VolleySample の中で Volley を使えるようになります。

おわり

こうして書いてみると面倒くさそうですが、実際のところはそんなに面倒ではなくて、今のところ Android Studio で Volley を使うならこの方法が一番楽なんじゃないかなぁと思っています。

他の方法としては、自分で (あるいは社内で) Maven リポジトリを用意して Volley の aar パッケージをホストするというようなことも可能でしょう (やったことないです)。 それに関しては下記記事が参考になります。

*1:Android Studio 0.3.0 でプロジェクトを作ると自動的にこれになります

*2:Volley はライブラリプロジェクトです