Project Lightbuild memisahkan perakitan aplikasi dari kode aplikasi: modul aplikasi (atau "app shell") merakit aplikasi Anda, dan modul library berisi fitur, UI, dan logika bisnis aplikasi Anda. Halaman ini menjelaskan tata letak project Lightbuild baru serta peran setiap modul dan file build.
Tata letak project
Template project Lightbuild default memiliki file dan modul build berikut:
MyApp/
├── project.lightbuild.yaml # Project-wide settings
├── app/ # App module
│ ├── lightbuild.yaml
│ └── resolved.deps
└── app-core/ # Library module
├── lightbuild.yaml
├── resolved.deps
└── src/ # The app's source code
Project ini memiliki tiga file konfigurasi build: file project.lightbuild.yaml di
direktori root, dan file lightbuild.yaml di setiap modul. Setiap modul
juga memiliki file resolved.deps. Untuk mengetahui detail tentang setelan di setiap file
konfigurasi, lihat Referensi konfigurasi Lightbuild.
Modul aplikasi
Project Lightbuild menggunakan modul aplikasi sebagai dasar untuk aplikasi Anda. Modul ini juga disebut sebagai "app shell" karena menangani perakitan project tanpa berisi kode sumber apa pun. Semua fitur dan logika Anda tetap berada dalam modul library terpisah, dan app shell berfokus pada konfigurasi akhir, seperti penandatanganan dan pengoptimalan.
File lightbuild.yaml modul aplikasi menetapkan type modul ke
application dan menentukan cara aplikasi akhir digabungkan, termasuk
hal berikut:
- Identitas aplikasi: ID aplikasi, kode versi, dan nama versi
- Persyaratan SDK aplikasi: versi
compileSdk,minSdk, dantargetSdk-nya - Modul yang menjadi dependensi aplikasi, dalam contoh ini
app-core
Modul library
Modul library berisi kode yang disusun oleh modul aplikasi, seperti
fitur aplikasi, komponen UI, dan logika bisnis. Dalam template project baru,
modul library app-core berisi file MainActivity.kt dengan kode
contoh.
File lightbuild.yaml modul library menetapkan nilai type modul ke
library. Modul library menentukan versi compileSdk dan minSdk, tetapi
tidak mendukung setelan targetSdk. File lightbuild.yaml modul library juga mendeklarasikan dependensi, pemroses KSP, dan pengujian modul.
Beberapa modul aplikasi
Sebuah project dapat memiliki lebih dari satu modul aplikasi. Lightbuild tidak mendukung ragam produk dan jenis build kustom dalam pengertian tradisional. Sebagai gantinya, Anda membuat
modul aplikasi terpisah untuk setiap versi aplikasi, seperti versi dev dan prod,
atau versi free dan paid.
Setiap modul aplikasi bergantung pada modul library yang diperlukan versinya. Modul aplikasi dapat berbagi modul library, bergantung pada modul library yang berbeda untuk kode dan setelan khusus versi (seperti modul injeksi dependensi (DI) terpisah), dan mengabaikan modul library untuk fitur yang tidak disertakan dalam versi.
Misalnya, project dengan versi aplikasi gratis dan berbayar mungkin memiliki modul berikut:
MyApp/
├── project.lightbuild.yaml
├── app-free/ # App module for the free version
├── app-paid/ # App module for the paid version
├── core/ # Library module that both versions use
├── di-free/ # DI module for the free version
├── di-paid/ # DI module for the paid version
└── premium/ # Library module for paid-only features
File app-paid/lightbuild.yaml versi berbayar bergantung pada semua modul versi berbayar:
android:
applicationId: com.example.myapp.paid
dependencies:
module:
- //core
- //di-paid
- //premium
File app-free/lightbuild.yaml versi gratis bergantung pada modul core bersama dan modul DI-nya sendiri, serta mengabaikan modul premium:
android:
applicationId: com.example.myapp.free
dependencies:
module:
- //core
- //di-free
Setiap modul aplikasi memiliki setelannya sendiri, seperti ID aplikasi dan penandatanganan rilis, sehingga Anda dapat mem-build, menginstal, dan memublikasikan setiap versi secara terpisah. Untuk
mem-build versi tertentu, tentukan modul aplikasinya saat menjalankan perintah
build. Contoh:
lightbuild build app-free
Dependensi yang diselesaikan
Setiap modul dalam project Lightbuild menyertakan file resolved.deps, yang
mencatat semua dependensi modul yang telah diselesaikan, termasuk dependensi
transitif. Lightbuild membuat file ini secara otomatis, sehingga tidak perlu menyelesaikan dependensi secara dinamis setiap kali Anda membuka atau mem-build project. Anda tidak boleh mengedit file ini secara manual.
Check in file resolved.deps ke kontrol versi, bersama dengan file lightbuild.yaml project Anda.
Untuk mengunci dependensi, misalnya dalam build CI, tambahkan
flag --locked-dependencies ke lightbuild resolve atau lightbuild test. Dengan flag ini, perintah akan gagal jika file resolved.deps tidak cocok dengan dependensi modul, bukan mengupdate file:
lightbuild resolve --locked-dependencies
Direkomendasikan untuk Anda
- Catatan: teks link ditampilkan saat JavaScript nonaktif
- Referensi konfigurasi Lightbuild
- Mem-build project Lightbuild dari command line
- Membandingkan Lightbuild dengan DSL Kotlin