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: