Un progetto Lightbuild separa l'assemblaggio dell'app dal codice dell'app: un modulo dell'app (o "shell dell'app") assembla l'app, mentre i moduli della libreria contengono le funzionalità, l'interfaccia utente e la logica di business dell'app. Questa pagina descrive il layout di un nuovo progetto Lightbuild e il ruolo di ogni modulo e file di build.
Layout del progetto
Il modello di progetto Lightbuild predefinito contiene i seguenti file e moduli di build:
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
Il progetto ha tre file di configurazione di compilazione: un file project.lightbuild.yaml nella directory root e un file lightbuild.yaml in ogni modulo. Ogni modulo ha anche un file resolved.deps. Per informazioni dettagliate sulle impostazioni di ogni file di configurazione, consulta il riferimento alla configurazione di Lightbuild.
Modulo dell'app
I progetti Lightbuild utilizzano un modulo dell'app come base per l'app. Viene anche chiamato "shell dell'app" perché gestisce l'assemblaggio del progetto senza contenere codice sorgente. Tutte le funzionalità e la logica rimangono in moduli di libreria separati e la shell dell'app si concentra sulla configurazione finale, ad esempio la firma e l'ottimizzazione.
Il file lightbuild.yaml del modulo dell'app imposta il type del modulo su application e specifica come viene assemblata l'app finale, tra cui:
- L'identità dell'app: ID applicazione, codice versione e nome versione
- I requisiti dell'SDK dell'app: le versioni
compileSdk,minSdketargetSdk - I moduli da cui dipende l'app, in questo esempio
app-core
Moduli della libreria
I moduli della libreria contengono il codice assemblato dal modulo dell'app, ad esempio le funzionalità, i componenti dell'interfaccia utente e la logica di business dell'app. Nel nuovo modello di progetto, il modulo della libreria app-core contiene il file MainActivity.kt con il codice di esempio.
Il file lightbuild.yaml di un modulo della libreria imposta il valore type del modulo su library. I moduli della libreria definiscono le versioni compileSdk e minSdk, ma non supportano l'impostazione targetSdk. Il file lightbuild.yaml di un modulo della libreria dichiara anche le dipendenze, i processori KSP e i test del modulo.
Più moduli dell'app
Un progetto può avere più di un modulo dell'app. Lightbuild non supporta le versioni prodotto e i tipi di build personalizzati nel senso tradizionale. Devi invece creare un modulo dell'app separato per ogni versione dell'app, ad esempio le versioni dev e prod o le versioni free e paid.
Ogni modulo dell'app dipende dai moduli della libreria richiesti dalla sua versione. I moduli dell'app possono condividere moduli di libreria, dipendere da moduli di libreria diversi per codice e impostazioni specifici della versione (ad esempio moduli di dependency injection (DI) separati) e omettere moduli di libreria per funzionalità non incluse in una versione.
Ad esempio, un progetto con versioni senza costi e a pagamento di un'app potrebbe avere i seguenti moduli:
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
Il file app-paid/lightbuild.yaml della versione a pagamento dipende da tutti i moduli della versione a pagamento:
android:
applicationId: com.example.myapp.paid
dependencies:
module:
- //core
- //di-paid
- //premium
Il file app-free/lightbuild.yaml della versione senza costi dipende dal modulo core condiviso e dal proprio modulo DI, mentre esclude il modulo premium:
android:
applicationId: com.example.myapp.free
dependencies:
module:
- //core
- //di-free
Ogni modulo dell'app ha le proprie impostazioni, ad esempio l'ID applicazione e la firma della release, in modo da poter creare, installare e pubblicare ogni versione separatamente. Per creare una versione specifica, specifica il modulo dell'app quando esegui il comando build. Ad esempio:
lightbuild build app-free
Dipendenze risolte
Ogni modulo di un progetto Lightbuild include un file resolved.deps, che registra tutte le dipendenze risolte del modulo, incluse quelle transitive. Lightbuild genera questo file automaticamente, in modo da non dover risolvere le dipendenze in modo dinamico ogni volta che apri o crei il progetto. Non modificare questo file manualmente.
Esegui il check-in dei file resolved.deps nel controllo della versione, insieme ai file lightbuild.yaml del progetto.
Per bloccare le dipendenze, ad esempio in una build CI, aggiungi il flag --locked-dependencies a lightbuild resolve o lightbuild test. Con questo flag, il comando non va a buon fine se un file resolved.deps non corrisponde alle dipendenze del modulo, anziché aggiornare il file:
lightbuild resolve --locked-dependencies
Consigliati per te
- Nota: il testo del link viene visualizzato quando JavaScript è disattivato
- Riferimento alla configurazione di Lightbuild
- Crea progetti Lightbuild dalla riga di comando
- Confronta Lightbuild con Kotlin DSL