Android
gradle

GitHubのOSSから見るbuild.gradleでライブラリのバージョンを管理する方法

More than 1 year has passed since last update.

Gradleのモジュールが複数ある場合に管理しないとbuild.gradleを編集する時に警告が出てめんどうですよね。(基本的に一番大きいバージョンになるとは思いますが)
本当にどれでもいいのですが、
どれかを選ぶとなると悩みがちなので、簡単にどういうパターンが有るか一応出しておきます。

gradle.propertiesを使う

google/iosched, DroidKaigi/conference-app-2017で使われているみたいです
https://github.com/DroidKaigi/conference-app-2017/search?utf8=%E2%9C%93&q=support_lib_version&type=

簡易的に対応するのであれば一番シンプルな気がします。
どこに設定あるんだっけ?ってなるかもっていうのはありますが、検索でなんとかなるとは思います。

gradle.properties
support_lib_version=25.1.1
app/build.gradle
dependencies {
    // Support Library
    compile "com.android.support:support-v4:${support_lib_version}"
}

ルートのbuild.gradleの中で、extを使う

googlesamples/android-architectureやJakeWharton/u2020で使われているみたいです。
https://github.com/googlesamples/android-architecture/blob/todo-mvp-rxjava/todoapp/app/build.gradle

無難な感じです。

build.gradle
ext {
    // Sdk and tools
    minSdkVersion = 10
    targetSdkVersion = 24
    compileSdkVersion = 24
    buildToolsVersion = '24.0.2'

    // App dependencies
    supportLibraryVersion = '24.2.0'
app/build.gradle
dependencies {
    // App's dependencies, including test
    compile "com.android.support:appcompat-v7:$rootProject.supportLibraryVersion"

dependencies.gradleなど別ファイルに分けて管理

twitter/twitter-kit-androidで使われているみたいです。
モジュールのbuild.gradleは見やすいですがSupport Libraryを一個追加する時に2ファイル編集しないといけないのはちょっとマイナスかもです

dependencies.gradle
ext {
    compileSdkVersion = 23
    buildToolsVersion = '23.0.3'
    targetSdkVersion = 22

    minSdkVersion = [
            twitter        : 14
    ]

    sourceCompatibilityVersion = JavaVersion.VERSION_1_7
    targetCompatibilityVersion = JavaVersion.VERSION_1_7

    enableTestCodeCoverage = true
    buildNumber = 'dev'

    dependency = [
            // Gradle plugins
            spoonGradlePlugin          : 'com.stanfy.spoon:spoon-gradle-plugin:1.0.4',
            androidGradlePlugin        : 'com.android.tools.build:gradle:2.1.2',
build.gradle
apply from: rootProject.file('dependencies.gradle')
tweet-ui/build.gradle
dependencies {
...
    compile dependency.fabric

べた書き

モジュールが1つしかない場合はこれで十分だと思います
kickstarterやGitHubのクライアントなど
https://github.com/kickstarter/android-oss/blob/master/app/build.gradle#L135
https://github.com/pockethub/PocketHub/blob/master/app/build.gradle#L112

kickstarter/android-oss
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:25.1.0'
    compile 'com.android.support:cardview-v7:25.1.0'

おわり

どれが好みだったでしょうか?
本当にどれでもいいのですが、複数のモジュールを使って開発をする場合は、どれかでバージョンを統一して管理しておきたいですね
他にいい方法を知っていたらぜひ教えてください!