ユーザ用ツール

サイト用ツール


サイドバー

プログレス合同会社

広告

android:studio:application:feature-depart-data-module:ksp-build

02.KSPビルドモジュールの作成

Roomのデータベース定義では

@Database(
  entities = [Settings::class],
  version = 1,
  exportSchema = false
)

のように、entitiesでデータベース内のエンティティを列挙します。

データベース定義は:appモジュールで行いますが、そうすると各機能モジュールのエンティティを:appモジュールが知る必要があり、モジュール結合を疎にするという設計方針から外れてしまいます。

そこで、各機能モジュールのエンティティ定義を自動で収集するKSP(Kotlin Symbol Processing)を使ったエンティティコレクターを作成することにします。

KSPライブラリの導入

エンティティコレクターに必要なKSPライブラリをバージョンカタログに追記します。

[versions]
   :
# ./gradlew -versionで表示されるKotlinのバージョンに適した最新バージョンにします(自動で上げない)
#noinspection NewerVersionAvailable
gradle-ksp = "2.0.21-1.0.28"        # https://mvnrepository.com/artifact/com.google.devtools.ksp/symbol-processing-api
kotlin-poet = "2.2.0"               # https://mvnrepository.com/artifact/com.squareup/kotlinpoet
   :
[libraries]
   :
gradle-ksp  = { module = "com.google.devtools.ksp:symbol-processing-api", version.ref = "gradle-ksp" }
kotlin-poet = { module = "com.squareup:kotlinpoet", version.ref = "kotlin-poet"  }
   :

5行目
コメント部分のURLを参照して、gradleKotlinに合った最新安定バージョンを指定します。
6行目
コメント部分のURLを参照して、最新安定バージョンを指定します。
10行目~11行目
エンティティコレクターに必要なライブラリを追記します。

追記後、『Sync Now』で内容をプロジェクトに反映させます。

ビルドモジュールの作成

エンティティコレクターは、ビルド用の機能ですので、/build-logicディレクトリ内に作成します。

/build-logic直下にkspディレクトリを追加し、直下にkotlinスクリプトbuild.gradle.ktsを作成してモジュール化します。

plugins {
  `kotlin-dsl`
}

dependencies {
  implementation(libs.gradle.ksp)
  implementation(libs.kotlin.poet)
}

6行目~7行目
エンティティコレクターに必要な依存ライブラリを指定しています。

/build-logic直下のsettings.gradle.kts:build-logic:kspモジュールをビルド対象として追記します。

   :
include(":ksp")

2行目
:build-logic:kspモジュールをビルド対象に指定しています。

android/studio/application/feature-depart-data-module/ksp-build.txt · 最終更新: by プログレス合同会社