Lightbuild プロジェクトのビルド構成は、YAML ファイル(プロジェクトのルート ディレクトリにある project.lightbuild.yaml ファイルと、各モジュールにある lightbuild.yaml ファイル)で構成されます。このページでは、各ファイルの設定について説明します。
プロジェクト ファイル
グローバル プロジェクト設定は、プロジェクトのルート ディレクトリにある project.lightbuild.yaml ファイルにあります。次に例を示します。
project:
name: MyApp
modules:
- app
- app-core
repositories:
- google
- mavenCentral
lightbuild:
version: 0.0.30
build:
java:
version: 17
kotlin:
version: 2.3.20
jvmTarget: "17"
次の表に、これらの設定を示します。
| 設定 | 説明 |
|---|---|
project.name |
プロジェクトの名前(例: MyApp)。Android Studio では、この名前が [Project] ウィンドウのルートとして表示されます。Kotlin DSL の rootProject.name と同様に、アプリの名前やアプリケーション ID とは異なります。 |
modules |
プロジェクト内のモジュール(アプリ モジュール(app)やライブラリ モジュール(app-core)など)。 |
repositories |
Lightbuild が依存関係を解決するリモート リポジトリ。詳細については、リポジトリをご覧ください。 |
lightbuild.version |
プロジェクトで使用される Lightbuild のバージョン。 |
build.kotlin.version |
プロジェクトで使用される Kotlin のバージョン。 |
build.java.version |
プロジェクトに必要な Java コンパイラのバージョン。 |
build.jvmTarget |
生成された JVM バイトコードのターゲット バージョン。 |
リポジトリ
repositories を使用して、Lightbuild が依存関係を解決するリポジトリを一覧表示します。組み込みの google リポジトリと mavenCentral リポジトリを一覧表示し、maven を使用してカスタム Maven リポジトリを追加できます。
repositories:
- google
- mavenCentral
- maven:
name: "Example Repo"
url: "https://maven.example.com/releases"
maven リポジトリには次の設定があります。
| 設定 | 説明 |
|---|---|
name |
リポジトリの名前。 |
url |
リポジトリの URL。 |
credentials |
省略可。local.properties ファイル内のリポジトリのユーザー名とパスワードにマッピングされるキー。詳細については、リポジトリの認証情報をご覧ください。 |
リポジトリの認証情報
Maven リポジトリでユーザー名とパスワードが必要な場合は、リポジトリに credentials ブロックを追加します。username と password の値は認証情報そのものではなく、プロジェクトの local.properties ファイルで定義するキーです。
repositories:
- google
- mavenCentral
- maven:
name: "Internal Repo"
url: "https://maven.example.com/releases"
credentials:
username: internalRepoUser
password: internalRepoPassword
次に、プロジェクトの local.properties ファイルで、各キーをその値にマッピングします。REPO_USERNAME と REPO_PASSWORD は、実際の認証情報に置き換えます。
# Also define sdk.dir, the path to your Android SDK.
internalRepoUser=REPO_USERNAME
internalRepoPassword=REPO_PASSWORD
モジュール ファイル
各モジュールのディレクトリには、モジュールの設定を定義する lightbuild.yaml ファイルがあります。次の表に、最上位の設定を示します。
| 設定 | 説明 |
|---|---|
platform |
モジュールがターゲットとするプラットフォーム: android。 |
type |
モジュール タイプ。アプリ モジュールの場合は application、ライブラリ モジュールの場合は library。詳細については、Lightbuild プロジェクトの構造をご覧ください。 |
optionalFeatures |
モジュールで有効にするオプション機能(プロトコル バッファをサポートする com.android.tools.lightbuild.protobuf など)。詳細については、プロトコル バッファをご覧ください。 |
android |
モジュールの Android 設定。詳しくは、Android の設定をご覧ください。 |
Android の設定
android ブロックには、モジュールの Android ビルド設定が含まれています。
| 設定 | 説明 |
|---|---|
namespace |
モジュールの名前空間。詳細については、名前空間を設定するをご覧ください。 |
compileSdk |
モジュールがコンパイルされる API レベル。詳しくは、SDK のバージョンをご覧ください。 |
minSdk |
モジュールがサポートする最小 API レベル。 |
targetSdk |
アプリがターゲットとする API レベル。アプリ モジュールでのみサポートされます。 |
applicationId |
アプリのアプリケーション ID。アプリ モジュールで設定します。 |
versionCode |
アプリのバージョン コード。アプリ モジュールで設定します。 |
versionName |
アプリのバージョン名。アプリ モジュールで設定します。 |
packaging |
アプリの debug ビルドと release ビルドをパッケージ化するための設定(リリース署名など)。アプリ モジュールでのみサポートされます。詳しくは、パッケージングをご覧ください。 |
dependencies |
他のモジュールや外部ライブラリに対するモジュールの依存関係。詳細については、依存関係をご覧ください。 |
kspProcessors |
モジュールのコードを生成する KSP プロセッサ。詳しくは、KSP プロセッサをご覧ください。 |
tests |
モジュールのローカルテストとインストルメンテーション テスト。詳細については、テストをご覧ください。 |
SDK バージョン
compileSdk、minSdk、targetSdk の設定を version.release.apiLevel の API レベルとして指定します。たとえば、次の設定では、API レベル 36 に対してモジュールをコンパイルし、API レベル 24 以降をサポートし、対象 API レベル 36 をターゲットにしています。
android:
compileSdk:
version:
release:
apiLevel: 36
minSdk:
version:
release:
apiLevel: 24
targetSdk:
version:
release:
apiLevel: 36
targetSdk 設定をサポートしているのはアプリ モジュールのみです。ライブラリ モジュールでは、compileSdk と minSdk の設定のみを定義します。
依存関係
dependencies ブロックでモジュールの依存関係を宣言します。
module: プロジェクト内の他のモジュール。//の後にモジュール名を続けて記述します(例://app-core、//features/search)。maven: 外部ライブラリ。group:artifact:version形式の Maven 座標として記述されます。
たとえば、次の設定では、app-core モジュールと AndroidX Core KTX ライブラリへの依存関係を追加しています。
android:
dependencies:
module:
- //app-core
maven:
- androidx.core:core-ktx:1.18.0
依存関係の設定
デフォルトでは、モジュールは各依存関係に対してコンパイルされ、実行時にそれらを含みますが、依存するモジュールには公開しません。モジュールが依存関係を使用する方法を変更するには、依存関係の後にコロンを追加し、その下に compile 設定、runtime 設定、またはその両方を追加します。
android:
dependencies:
module:
- //data:
compile: public
maven:
- androidx.core:core-ktx:1.18.0
- androidx.annotation:annotation:1.9.1:
runtime: off
この例では、このモジュールに依存するモジュールも data モジュールのクラスを使用できます。Jetpack Annotation ライブラリは、このモジュールのコンパイルにのみ使用されます。Core KTX はデフォルト設定を使用します。
compile 設定は、依存関係に対してコンパイルするモジュールを制御します。
private(デフォルト): このモジュールは依存関係に対してコンパイルされますが、このモジュールに依存するモジュールはコンパイルされません。public: このモジュールと、このモジュールに依存するモジュールは、依存関係に対してコンパイルされます。モジュールの公開 API が依存関係の型を使用する場合は、publicを使用します。off: このモジュールは依存関係に対してコンパイルされません。
runtime 設定は、依存関係が実行時に使用可能かどうかを制御します。
public(デフォルト): 依存関係は、実行時にこのモジュールと、このモジュールに依存するモジュールで使用できます。off: 依存関係は実行時に使用できません。アノテーションなど、コードがコンパイル時にのみ必要とする依存関係にはoffを使用します。
compile と runtime の両方を off にすることはできません。テストの依存関係では、compile は private または off のみにできます。
これらの設定が api や compileOnly などの Kotlin DSL 構成にどのように対応しているかについては、Lightbuild と Kotlin DSL の比較をご覧ください。
KSP プロセッサ
Moshi や Room など、Kotlin Symbol Processing(KSP)に基づくコード生成ツールを使用するには、プロセッサを kspProcessors ブロックに追加し、コードが実行時に使用するライブラリを dependencies ブロックに追加します。Lightbuild は、ビルド中に KSP プラグインを自動的に適用し、コード生成を構成します。
たとえば、次の設定では、KSP コード生成ツールを使用して Moshi を構成します。
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
プロトコル バッファ
ライブラリ モジュールのプロトコル バッファ(.proto)ファイルからコードを生成するには、プロトコル バッファ機能をモジュールの optionalFeatures リストに追加し、プロトコル バッファ ランタイム ライブラリをモジュールの依存関係に追加します。optionalFeatures は、android ブロックの外にある最上位の設定です。
optionalFeatures:
- com.android.tools.lightbuild.protobuf
android:
dependencies:
maven:
- com.google.protobuf:protobuf-javalite:4.28.2
- com.google.protobuf:protobuf-kotlin-lite:4.28.2
モジュールの .proto ファイルを src/main/proto ディレクトリに配置します。モジュールをビルドすると、Lightbuild は Protocol Buffers Lite ランタイム(Android で推奨)の Java クラスと Kotlin クラスを生成します。
テスト
tests ブロックでモジュールのテストを構成します。
test: 開発マシンの JVM で実行されるローカルテスト。dependenciesのテストの依存関係を一覧表示します。androidTest: デバイスまたはエミュレータで実行されるインストルメンテーション テスト。runnerをテストランナー クラスに設定し、テストの依存関係をdependenciesの下にリストします。
次に例を示します。
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
パッケージ化
アプリ モジュールでは、packaging ブロックを使用して、アプリの debug ビルドと release ビルドを構成します。独自の鍵でリリースビルドに署名するには、signing ブロックを release プロファイルに追加します。
android:
packaging:
release:
signing:
storeFile: "${RELEASE_STORE_FILE}"
storePassword: "${RELEASE_STORE_PASSWORD}"
keyAlias: "${RELEASE_KEY_ALIAS}"
keyPassword: "${RELEASE_KEY_PASSWORD}"
signing ブロックは、次の設定をサポートしています。
storeFile: キーストア ファイルのパス。モジュールのディレクトリからの相対パスか、ホーム ディレクトリ内の場所を示す~/で始まるパス。storePassword: キーストアのパスワード。keyAlias: キーストア内の署名鍵のエイリアス。keyPassword: 署名鍵のパスワード。
プロジェクトのファイルにパスワードを保存しないようにするには、例のように ${NAME} 構文を使用して、これらの値を環境変数参照に設定します。storeFile と keyAlias を直接記述することも、環境変数を参照することもできます。ビルド時に、Lightbuild は各参照を環境変数の値に置き換えます。各値には参照のみを含める必要があります。Lightbuild は、${HOME}/upload-keystore.jks などの長い値の一部である参照を置き換えません。
例
次の例は、アプリ モジュールとライブラリ モジュールの完全なモジュール ファイルを示しています。
アプリ モジュール
次の app/lightbuild.yaml ファイルは、app-core ライブラリ モジュールに依存するアプリ モジュールを構成します。
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"
dependencies:
module:
- //app-core
ライブラリ モジュール
次の app-core/lightbuild.yaml ファイルは、Jetpack Compose と Moshi を使用し、ローカルテストとインストルメンテーション テストを含むライブラリ モジュールを構成します。
platform: android
type: library
android:
namespace: com.example.myapp
compileSdk:
version:
release:
apiLevel: 36
minSdk:
version:
release:
apiLevel: 24
dependencies:
maven:
- androidx.core:core-ktx:1.18.0
- androidx.lifecycle:lifecycle-runtime-ktx:2.10.0
- androidx.activity:activity-compose:1.13.0
- androidx.lifecycle:lifecycle-runtime-compose:2.10.0
- androidx.lifecycle:lifecycle-viewmodel-compose:2.10.0
- androidx.compose.ui:ui:1.10.4
- androidx.compose.ui:ui-tooling-preview:1.10.4
- androidx.compose.material3:material3:1.4.0
- androidx.navigation3:navigation3-ui:1.0.1
- androidx.navigation3:navigation3-runtime:1.0.1
- androidx.lifecycle:lifecycle-viewmodel-navigation3:2.10.0
- androidx.compose.ui:ui-tooling:1.10.4
- androidx.compose.ui:ui-test-manifest:1.10.4
- 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
tests:
test:
dependencies:
maven:
- junit:junit:4.13.2
- org.jetbrains.kotlinx:kotlinx-coroutines-test:1.10.2
androidTest:
runner: androidx.test.runner.AndroidJUnitRunner
dependencies:
maven:
- androidx.test:core:1.7.0
- androidx.test.ext:junit:1.3.0
- androidx.test:runner:1.7.0
- androidx.test.espresso:espresso-core:3.7.0
- androidx.compose.ui:ui-test-junit4:1.10.4
あなたへのおすすめ
- 注: JavaScript がオフになっている場合はリンクテキストが表示されます
- Lightbuild プロジェクトの構造
- コマンドラインから Lightbuild プロジェクトをビルドする
- Lightbuild と Kotlin DSL の比較