【Android】buildSrcを使ってライブラリの定義をまとめる

【Android】buildSrcを使ってライブラリの定義をまとめる

こんにちは、kiyokawaです。

Androidアプリをマルチモジュールで作った時に、ライブラリの情報が各モジュールのbuild.gradleに散らばってしまい
ライブラリのバージョン更新が入るたびにすべてのモジュールを一々確認して修正する羽目になりました。
そのような苦痛をもう受けたくはないので、Kotlin + buildSrcで一元管理してみました。

従来の書き方

Kotlin + buildSrc

ぱっと見でわかりやすくなりましたし、補完も効いていい感じです。

利用方法

1. buildSrcフォルダを作成する

appモジュールと同じようにルートの階層にbuildSrcフォルダを作成します。

 

2. build.gradle.ktsを作成する

作成したbuildSrcフォルダに、build.gradle.ktsを作成します。

ここまで行ったら一度gradle syncを行います。
buildSrcフォルダ内が以下のようになっていればOKです。

3. build.gradle.ktsを記載する

先ほど作成したbuild.gradle.ktsを開き、以下のように記載してください。

記載が完了したら、再度gradle syncを実行します。

4. ライブラリ情報を記載するobjectを作成する

次に、ライブラリの情報を記載するKotlinのobjectを作成します。
今回はDep.ktとしました。

注意点
私の環境だけなのか分かりませんが、src/main/java直下にDep.ktを作成しても別モジュールのbuild.gradleから参照することができませんでした。
dependenciesというフォルダを作成して一段階階層を増やしたところ参照できるようになったので今回は階層を増やした状態で説明します。

5. Dep.ktにライブラリ情報を記載する

6. build.gradleで使う

これで準備完了です!早速使ってみましょう!
依存関係を定義したいモジュールのbuild.gradleを開き、先頭に「import dependencies.Dep」を追記して

Dep.ktに定義した定数を使って置き換えます。
置き換えたら、sync nowをクリックして成功すれば完了です!お疲れ様でした!

現在確認している問題

1つ自分が確認している問題があって、Android Studio(version 3.5)で新しくActivityを作成すると勝手にbuild.gradleに以下のような依存関係が記載されてしまいます。。

Activityを作成するたびに毎回消しているのでなかなか面倒臭いです。

まとめ

ライブラリの情報を一箇所に、Kotlinで定義できたのでマルチモジュールにする時は楽になりそうです。
ただ、上記に挙げたようにまだ問題もあるようなのでマルチモジュールにするわけでは無い時などは、無理に急いで導入する必要も無いのかなという感じだと思っています。