Closed6

Gradle Convention Plugins の学習

高田 晴彦高田 晴彦

対象 Android プロジェクト

https://github.com/tfandkusu/ga913-android

Apple 公式サンプル Handling user input と同じ仕様の自作 Android アプリ

モジュール構成

model

  • ドメインモデルは model モジュールに格納
  • model モジュールはすべてのモジュールから参照される

feature:landmark

  • ViewModel と Compose は feature:xxx モジュールに格納
  • このアプリは小規模なサンプルなので1つの feature:xxx モジュールしか無いが、機能が増えるごとに feature:xxx モジュールが増える想定

viewCommon

  • 複数の feature:xxx モジュールから共通で使われる UI 層のクラスを格納

data

  • data 層を格納する
  • 小規模なサンプルなので Domain 層は省略されている

testUtil

  • 複数の feature:xxx モジュールの単体テストで共通で使われるクラスを格納
高田 晴彦高田 晴彦

feature:landmark モジュールの build.gradle.kts がすっきりした

これだけ

https://github.com/tfandkusu/ga913-android/blob/main/feature/landmark/build.gradle.kts

feature:xxx モジュールが増えたら、これをコピペして namespace のところだけ変更すれば良い。

alias(libs.plugins.ga913android.android.feature) で必要な設定を取り込んでいる。
こちらの Convention Plugin に実装されている。

https://github.com/tfandkusu/ga913-android/blob/main/build-logic/convention/src/main/kotlin/com/tfandkusu/ga913android/AndroidFeatureConventionPlugin.kt

apply("ga913android.android.library.compose") では Compose を使うモジュール、viewCommon と共通の設定を実装している。
configureAndroidCompose(this) の部分は後で説明。

https://github.com/tfandkusu/ga913-android/blob/main/build-logic/convention/src/main/kotlin/com/tfandkusu/ga913android/AndroidLibraryComposeConventionPlugin.kt

viewCommon モジュールでは AndroidLibraryComposeConventionPlugin を使っている。

https://github.com/tfandkusu/ga913-android/blob/main/viewCommon/build.gradle.kts

高田 晴彦高田 晴彦

Convention Plugin を各モジュールの build.gradle.kts から使えるようにする

build-logic プロジェクト convention モジュールの build.gradle.ktsid をつけて Convention Plugin のクラスを登録する。

https://github.com/tfandkusu/ga913-android/blob/main/build-logic/convention/build.gradle.kts

バージョンカタログの [plugins] に登録する。

https://github.com/tfandkusu/ga913-android/blob/main/gradle/libs.versions.toml

このスクラップは7日前にクローズされました