Un proyecto de Lightbuild separa el ensamblado de la app del código de la app: un módulo de app (o "shell de la app") ensambla tu app, y los módulos de biblioteca contienen las funciones, la IU y la lógica empresarial de la app. En esta página, se describe el diseño de un nuevo proyecto de Lightbuild y la función de cada módulo y archivo de compilación.
Diseño del proyecto
La plantilla de proyecto predeterminada de Lightbuild tiene los siguientes archivos y módulos de compilación:
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
El proyecto tiene tres archivos de configuración de compilación: un archivo project.lightbuild.yaml en
el directorio raíz y un archivo lightbuild.yaml en cada módulo. Cada módulo
también tiene un archivo resolved.deps. Para obtener detalles sobre los parámetros de configuración de cada archivo de configuración, consulta la referencia de configuración de Lightbuild.
Módulo de la app
Los proyectos de Lightbuild usan un módulo de app como base para tu app. También se conoce como "shell de la app" porque controla el ensamblado del proyecto sin contener ningún código fuente. Todas las funciones y la lógica permanecen en módulos de biblioteca independientes, y la shell de la app se enfoca en la configuración final, como la firma y la optimización.
El archivo lightbuild.yaml del módulo de la app establece el type del módulo en application y especifica cómo se arma la app final, lo que incluye lo siguiente:
- La identidad de la app: su ID de aplicación, código de versión y nombre de versión
- Los requisitos del SDK de la app: sus versiones
compileSdk,minSdkytargetSdk - Los módulos de los que depende la app, en este ejemplo,
app-core
Módulos de biblioteca
Los módulos de biblioteca contienen el código que ensambla el módulo de la app, como las funciones, los componentes de la IU y la lógica empresarial de la app. En la plantilla de proyecto nueva,
el módulo de biblioteca app-core contiene el archivo MainActivity.kt con código de
ejemplo.
El archivo lightbuild.yaml de un módulo de biblioteca establece el valor type del módulo en library. Los módulos de biblioteca definen sus versiones de compileSdk y minSdk, pero no admiten el parámetro de configuración targetSdk. El archivo lightbuild.yaml de un módulo de biblioteca también declara las dependencias, los procesadores de KSP y las pruebas del módulo.
Varios módulos de la app
Un proyecto puede tener más de un módulo de app. Lightbuild no admite variantes de productos ni tipos de compilación personalizados en el sentido tradicional. En cambio, creas un módulo de app independiente para cada versión de tu app, como las versiones dev y prod, o las versiones free y paid.
Cada módulo de app depende de los módulos de biblioteca que necesita su versión. Los módulos de app pueden compartir módulos de biblioteca, depender de diferentes módulos de biblioteca para el código y la configuración específicos de la versión (como módulos de inserción de dependencias [DI] independientes) y omitir módulos de biblioteca para las funciones que no incluye una versión.
Por ejemplo, un proyecto con versiones gratuita y pagada de una app podría tener los siguientes módulos:
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
El archivo app-paid/lightbuild.yaml de la versión pagada depende de todos los módulos de la versión pagada:
android:
applicationId: com.example.myapp.paid
dependencies:
module:
- //core
- //di-paid
- //premium
El archivo app-free/lightbuild.yaml de la versión gratuita depende del módulo core compartido y de su propio módulo de DI, y deja de lado el módulo premium:
android:
applicationId: com.example.myapp.free
dependencies:
module:
- //core
- //di-free
Cada módulo de app tiene su propia configuración, como el ID de aplicación y la firma de la versión, para que puedas compilar, instalar y publicar cada versión por separado. Para compilar una versión específica, especifica su módulo de app cuando ejecutes el comando build. Por ejemplo:
lightbuild build app-free
Dependencias resueltas
Cada módulo de un proyecto de Lightbuild incluye un archivo resolved.deps, que
registra todas las dependencias resueltas del módulo, incluidas las dependencias
transitivas. Lightbuild genera este archivo automáticamente para que no necesite resolver las dependencias de forma dinámica cada vez que abres o compilas tu proyecto. No debes editar este archivo de forma manual.
Registra tus archivos resolved.deps en el control de versiones, junto con los archivos lightbuild.yaml de tu proyecto.
Para bloquear tus dependencias, por ejemplo, en una compilación de CI, agrega la
marca --locked-dependencies a lightbuild resolve o lightbuild test. Con
esta marca, el comando falla si un archivo resolved.deps no coincide con las
dependencias del módulo, en lugar de actualizar el archivo:
lightbuild resolve --locked-dependencies
Recomendaciones para ti
- Nota: El texto del vínculo se muestra cuando JavaScript está desactivado
- Referencia de configuración de Lightbuild
- Cómo compilar proyectos de Lightbuild desde la línea de comandos
- Compara Lightbuild con el DSL de Kotlin