Kotlin DSL を使用した Android ビルドの構成に慣れている場合は、このページで、一般的な Kotlin DSL 構成が Lightbuild にどのようにマッピングされるかを確認できます。
このページの例では、Kotlin DSL と Android Gradle プラグイン(AGP)9.0 以降を使用しています。これには、組み込みの Kotlin サポートが含まれています。
ビルドファイル
次の表に、各 Kotlin DSL ビルドファイルに相当する Lightbuild のビルドファイルを示します。
| Kotlin DSL | Lightbuild | 目的 |
|---|---|---|
settings.gradle.kts |
project.lightbuild.yaml |
プロジェクト名、モジュール、リポジトリ |
ルート build.gradle.kts と gradle-wrapper.properties |
project.lightbuild.yaml |
ビルドツールとツールチェーンのバージョン |
モジュール build.gradle.kts |
モジュール lightbuild.yaml |
モジュール タイプ、Android の設定、依存関係、テスト |
gradle.lockfile |
resolved.deps |
依存関係のバージョンを追跡する |
プロジェクトの設定
Kotlin DSL では、settings.gradle.kts ファイルでプロジェクトの名前、モジュール、依存関係を解決するリポジトリを定義します。
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
}
}
rootProject.name = "MyApp"
include(":app")
include(":app-core")
Lightbuild では、project.lightbuild.yaml ファイルで同じ設定を定義します。
project:
name: MyApp
modules:
- app
- app-core
repositories:
- google
- mavenCentral
次の表に、プロジェクト全体の設定の比較を示します。
| コンセプト | Kotlin DSL | Lightbuild |
|---|---|---|
| プロジェクト名 | rootProject.name |
project.name |
| モジュール | include(":app") |
modules |
| リポジトリ | repositories(dependencyResolutionManagement) |
repositories |
| カスタム Maven リポジトリ | maven { url = uri("https://maven.example.com/releases") } |
name と url を使用した maven |
| リポジトリの認証情報 | maven ブロック内の credentials |
credentials は、local.properties で定義したキーに置き換えます。 |
| ビルドツールのバージョン | gradle-wrapper.properties の Gradle バージョンと plugins ブロックの AGP バージョン |
lightbuild.version |
| Kotlin バージョン | AGP に組み込まれています。新しいバージョンを使用するには、kotlin-gradle-plugin を buildscript クラスパスに追加します。 |
build.kotlin.version |
| Java のバージョン | kotlin { jvmToolchain(17) } |
build.java.version |
モジュール タイプとプラグイン
Kotlin DSL では、プラグインを適用してモジュールのタイプを選択し、他のプラグインを適用して KSP などの機能を追加します。Lightbuild では、モジュールの type を設定すると、Lightbuild が構成に必要な機能を適用します。
| コンセプト | Kotlin DSL | Lightbuild |
|---|---|---|
| アプリ モジュール | id("com.android.application") |
type: application |
| ライブラリ モジュール | id("com.android.library") |
type: library |
| Kotlin マルチプラットフォーム(KMP)モジュール | id("org.jetbrains.kotlin.multiplatform") |
現時点ではサポートされていません |
| Kotlin | AGP 9.0 以降に組み込まれている | 搭載 |
| KSP | id("com.google.devtools.ksp") |
kspProcessors を宣言すると自動的に適用されます |
| プロトコル バッファ | id("com.google.protobuf") |
com.android.tools.lightbuild.protobuf(optionalFeatures) |
| バージョン カタログ | libs.versions.toml 件のファイル |
現時点ではサポートされていません |
| その他のプラグイン | Gradle プラグインを適用する | 現時点ではサポートされていません |
Android の設定
Kotlin DSL では、モジュールの build.gradle.kts ファイルの android ブロックで Android の設定を構成します。
plugins {
id("com.android.application")
}
android {
namespace = "com.example.myapp.app"
compileSdk = 36
defaultConfig {
applicationId = "com.example.myapp"
minSdk = 24
targetSdk = 36
versionCode = 1
versionName = "1.0"
}
}
Lightbuild では、モジュールの lightbuild.yaml ファイルの android ブロックで同じ設定を構成します。
platform: android
type: application
android:
namespace: com.example.myapp.app
compileSdk:
version:
release:
apiLevel: 36
minSdk:
version:
release:
apiLevel: 24
targetSdk:
version:
release:
apiLevel: 36
applicationId: com.example.myapp
versionCode: 1
versionName: "1.0"
次の表に、これらの設定の比較を示します。
| 設定 | Kotlin DSL | Lightbuild |
|---|---|---|
| 名前空間 | namespace |
namespace |
| SDK をコンパイルする | compileSdk = 36 |
compileSdk.version.release.apiLevel: 36 |
| Minimum SDK | minSdk = 24(defaultConfig) |
minSdk.version.release.apiLevel: 24 |
| 対象 SDK | targetSdk = 36(defaultConfig) |
targetSdk.version.release.apiLevel: 36 |
| アプリケーション ID | applicationId(defaultConfig) |
applicationId |
| バージョン コード | versionCode(defaultConfig) |
versionCode |
| バージョン名 | versionName(defaultConfig) |
versionName |
| リリース署名 | signingConfigs、signingConfig(release ビルドタイプ) |
packaging.release.signing |
依存関係
Kotlin DSL では、implementation などの構成を使用して、dependencies ブロックで依存関係を宣言します。
dependencies {
implementation(project(":app-core"))
implementation("androidx.core:core-ktx:1.18.0")
}
Lightbuild では、モジュールの依存関係を module に、外部ライブラリを maven に記述します。
android:
dependencies:
module:
- //app-core
maven:
- androidx.core:core-ktx:1.18.0
Kotlin DSL は、api、compileOnly、runtimeOnly などの他の構成を使用して、モジュールが依存関係を使用する方法を制御します。
dependencies {
api(project(":data"))
compileOnly("androidx.annotation:annotation:1.9.1")
}
Lightbuild では、代わりに compile と runtime の設定を依存関係に追加します。
android:
dependencies:
module:
- //data:
compile: public
maven:
- androidx.annotation:annotation:1.9.1:
runtime: off
これらの設定の詳細については、依存関係の設定をご覧ください。
次の表に、一般的な依存関係の宣言を比較します。
| 依存関係 | Kotlin DSL | Lightbuild |
|---|---|---|
| プロジェクト内のモジュール | implementation(project(":app-core")) |
//app-core(android.dependencies.module) |
| 外部ライブラリ | implementation("group:artifact:version") |
group:artifact:version(android.dependencies.maven) |
| API の依存関係 | api("group:artifact:version") |
android.dependencies.maven の group:artifact:version(compile: public) |
| コンパイル専用の依存関係 | compileOnly("group:artifact:version") |
android.dependencies.maven の group:artifact:version(runtime: off) |
| ランタイムのみの依存関係 | runtimeOnly("group:artifact:version") |
android.dependencies.maven の group:artifact:version(compile: off) |
| KSP プロセッサ | ksp("group:artifact:version") |
group:artifact:version(android.kspProcessors.maven) |
| ローカルテストの依存関係 | testImplementation("group:artifact:version") |
group:artifact:version(android.tests.test.dependencies.maven) |
| インストルメンテーション テストの依存関係 | androidTestImplementation("group:artifact:version") |
group:artifact:version(android.tests.androidTest.dependencies.maven) |
KSP
Kotlin DSL では、KSP プラグインを適用し、ksp 構成でプロセッサを追加します。
plugins {
id("com.android.library")
id("com.google.devtools.ksp")
}
dependencies {
implementation("com.squareup.moshi:moshi:1.15.2")
implementation("com.squareup.moshi:moshi-kotlin:1.15.2")
ksp("com.squareup.moshi:moshi-kotlin-codegen:1.15.2")
}
Lightbuild では、プロセッサを kspProcessors ブロックに追加すると、Lightbuild が KSP プラグインを自動的に適用します。
type: library
android:
dependencies:
maven:
- com.squareup.moshi:moshi:1.15.2
- com.squareup.moshi:moshi-kotlin:1.15.2
kspProcessors:
maven:
- com.squareup.moshi:moshi-kotlin-codegen:1.15.2
テスト
Kotlin DSL では、defaultConfig でインストルメンテーション テスト ランナーを設定し、testImplementation 構成と androidTestImplementation 構成でテストの依存関係を追加します。
android {
defaultConfig {
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
}
dependencies {
testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.ext:junit:1.3.0")
androidTestImplementation("androidx.test.espresso:espresso-core:3.7.0")
}
Lightbuild では、ローカルテストを tests.test で、インストルメンテーション テストを tests.androidTest で構成します。
android:
tests:
test:
dependencies:
maven:
- junit:junit:4.13.2
androidTest:
runner: androidx.test.runner.AndroidJUnitRunner
dependencies:
maven:
- androidx.test.ext:junit:1.3.0
- androidx.test.espresso:espresso-core:3.7.0
ビルドコマンド
Kotlin DSL では、Gradle ラッパーを使用して Gradle タスクを実行することで、コマンドラインからビルドとテストを行います。Lightbuild では、Lightbuild CLI を使用します。
| タスク | Gradle ラッパー | Lightbuild CLI |
|---|---|---|
| アプリ モジュールをビルドする | ./gradlew :app:assembleDebug |
lightbuild build app |
| すべてのターゲットをビルドする | ./gradlew assemble |
lightbuild build |
| モジュールのローカルテストを実行する | ./gradlew :app-core:test |
lightbuild test app-core:hostTest |
| モジュールのインストルメンテーション テストを実行する | ./gradlew :app-core:connectedAndroidTest |
lightbuild test app-core:deviceTest |
| すべてのテストを実行する | ./gradlew test connectedAndroidTest |
lightbuild test |
| ビルド出力とキャッシュを削除する | ./gradlew clean |
lightbuild clean |
詳しくは、コマンドラインからアプリをビルドするとコマンドラインから Lightbuild プロジェクトをビルドするをご覧ください。
依存関係のロック
Kotlin DSL では、依存関係のロックは任意です。ビルド スクリプトで有効にしてから、--write-locks フラグを指定してビルドを実行することで、ロックファイルを書き込みます。Lightbuild では、すべてのモジュールに、モジュールの解決済み依存関係を記録する resolved.deps ファイルがあります。このファイルは Lightbuild によって自動的に生成されます。Gradle ロックファイルと同様に、resolved.deps ファイルをバージョン管理にチェックインします。
CI ビルドなどで依存関係をロックするには、--locked-dependencies フラグを lightbuild resolve または lightbuild test に追加します。このフラグを使用すると、resolved.deps ファイルがモジュールの依存関係と一致しない場合、ファイルを更新する代わりにコマンドが失敗します。
lightbuild resolve --locked-dependencies
サポートされていない機能
Lightbuild は、次の Kotlin DSL 機能をサポートしていません。
- バージョン カタログと規則プラグイン
- カスタム プラグイン
- プロダクト フレーバー。代わりに、アプリのバージョンごとに別々のアプリ モジュールを作成します。詳細については、複数のアプリ モジュールをご覧ください。
- Kotlin マルチプラットフォーム(KMP)モジュール
- プロキシ サーバーを介した依存関係の解決
また、プロジェクトで Kotlin DSL モジュールと Lightbuild モジュールを混在させることはできません。既知の問題については、Lightbuild のリリースノートをご覧ください。
あなたへのおすすめ
- 注: JavaScript がオフになっている場合はリンクテキストが表示されます
- Lightbuild 構成リファレンス
- Lightbuild プロジェクトの構造
- Lightbuild を使ってみる