LoginSignup
21
20

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-03-26

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'

おわり

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

21
20
2

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
21
20