GradleのDependenciesを管理しましょう

  • このエントリーをはてなブックマークに追加

読了時間5分

こんにちは、Androidエンジニアのニコです。
最近、AndroidのGradleビルドファイルをより良いものにする方法を考えてました。
GradleビルドファイルのDependenciesはGradleビルドファイルの中に一番よく変わるところと思いますが、
プロジェクトが分かれていれば、Dependenciesの管理が難しくなります。例えば、MVPデザインパターンの場合にModel, ViewとPresenterで分けて、各プロジェックトに別のbuild.gradleを作らないといけないです。
調べてみたところ、GradleのDependenciesが独立したGradleファイルで管理できる方法を見つけました。

その為に、新しいGradleファイルが必要です。私の場合はdependecies.gradleという名前を作って、buildconfigフォルダーの中に入れました。

dependencies_gradle

そしてそのファイルでDependenciesを管理します。

allprojects {
repositories {
jcenter()
}
}
ext {
//Libraries
androidSupportLibraryVersion = '23.0.1'
butterKnifeVersion = '7.0.1'
rxJavaVersion = '1.0.14'
rxAndroidVersion = '1.0.1'
//Test
espressoVersion = '2.2.1'
androidTestSupportLibraryVersion = '0.1'
uiDependencies = [
androidSupportLibraryV4:     "com.android.support:support-v4:${androidSupportLibraryVersion}",
androidSupportAppcompatV7:   "com.android.support:appcompat-v7:${androidSupportLibraryVersion}",
recyclerView:                "com.android.support:recyclerview-v7:${androidSupportLibraryVersion}",
androidSupportDesign:        "com.android.support:design:${androidSupportLibraryVersion}",
butterKnife:                 "com.jakewharton:butterknife:${butterKnifeVersion}",
rxJava:                      "io.reactivex:rxjava:${rxJavaVersion}",
rxAndroid:                   "io.reactivex:rxandroid:${rxAndroidVersion}",
]
uiTestDependencies = [
espresso:                    "com.android.support.test.espresso:espresso-core:${espressoVersion}",
androidTestRunner:           "com.android.support.test:runner:${androidTestSupportLibraryVersion}",
androidTestRules:            "com.android.support.test:rules:${androidTestSupportLibraryVersion}",
]
}

そして、それを自分のビルドファイルに統合するために、下記のコードをトップレベルのbuild.gradleファイルに入れて下さい。

apply from: 'buildconfig/dependencies.gradle'

そうすると、build.gradleファイルの中で下記のように使えます。

dependencies {
def uiDependencies = rootProject.ext.uiDependencies
def uiTestDependencies = rootProject.ext.uiTestDependencies
compile uiDependencies.androidSupportLibraryV4
compile uiDependencies.androidSupportAppcompatV7
compile uiDependencies.recyclerView
compile uiDependencies.androidSupportDesign
compile uiDependencies.butterKnife
compile uiDependencies.rxJava
compile uiDependencies.rxAndroid
compile uiTestDependencies.espresso
compile uiTestDependencies.androidTestRunner
compile uiTestDependencies.androidTestRules
}

最先端情報吸収研究所 – AIAL

際限ない情報の中から、自分に価値のある情報を効果的に吸収することは、かつてなく大きなチャレンジです。最先端情報研究所はニュースアプリ「カメリオ」、レコメンドエンジン「カメクト」を提供する白ヤギコーポレーションのR&D部門として、データサイエンスの力でこの問題を解決していきます。白ヤギでは現在研究開発メンバーを募集しております。ご興味のある方は是非下記サイトを御覧ください!

Date:2015-11-09 Posted in:Android Text by: