Modularitzar
Un projecte Amper es defineix per un fitxer project.yaml. Aquest fitxer conté la llista de mòduls i la configuració global del projecte. La carpeta amb el fitxer project.yaml és l’arrel del projecte. Els mòduls només poden estar ubicats sota l’arrel del projecte. Si només hi ha un mòdul al projecte, no cal el fitxer project.yaml.
Un mòdul Amper és un directori amb un fitxer de configuració module.yaml, el codi font del mòdul i els recursos. Un fitxer de configuració del mòdul descriu què produir: per exemple, una biblioteca reutilitzable o una aplicació específica per a una plataforma. Cada mòdul descriu un sol producte. Diversos mòduls no poden compartir les mateixes fonts o recursos, però poden dependre els uns dels altres.
|-app/| |-src/| | |-main.kt| |-...| |-module.yaml|-lib/| |-src/| | |-util.kt| |-module.yaml|-project.yamlEn el cas anterior, el project.yaml es veu així:
modules: - app - libConsulta la referència per a més opcions per definir la llista de mòduls al fitxer project.yaml.
Dividim el nostre projecte en una aplicació JVM i un mòdul de biblioteca, amb codi compartit que reutilitzarem més tard quan fem el projecte multiplataforma.
El nostre objectiu aquí és separar la nostra aplicació en un mòdul de biblioteca shared i un mòdul d’aplicació jvm-app i aconseguir la següent estructura:
Recursos
In multiplatform modules resources are merged from the common folders and corresponding platform-specific folders:
|-src/| |-...|-resources/ # these resources are copied into the Android and JVM artifact| |-...|-resources@android/ # these resources are copied into the Android artifact| |-...|-resources@jvm/ # these resources are copied into the JVM artifact| |-...In case of duplicating names, the common resources are overwritten by the more specific ones. That is resources/foo.txt will be overwritten by resources@android/foo.txt.
Android modules also have res and assets folders:
|-src/| |-...|-res/| |-drawable/| | |-...| |-layout/| | |-...| |-...|-assets/| |-...|-module.yamlKotlin Symbol Processing
Kotlin - Kotlin Symbol ProcessingAmper provides built-in support for KSP.
Amper is compatible with KSP2, so all processors must be updated to this version.
To add a processor to your module, use the settings.kotlin.ksp section, where you can also specify options for KSP.
Veure un exemple a Room - Bàsic
Dependències
Àmbits i visibilitat
PENDENT moure a l’àmbit corresponent.
Hi ha tres àmbits de dependència:
all | (per defecte) la dependència està disponible durant la compilació i l’execució. |
compile-only | la dependència només està disponible durant la compilació. |
runtime-only | La dependència no està disponible durant la compilació, però està disponible durant les proves i l’execució |
En la forma completa, pots declarar l’àmbit de la següent manera:
dependencies: - io.ktor:ktor-client-core:2.2.0: scope: compile-only - ../ui/utils: scope: runtime-onlyTambé hi ha una forma abreujada:
dependencies: - io.ktor:ktor-client-core:2.2.0: compile-only - ../ui/utils: runtime-onlyPer defecte, totes les dependències no són accessibles des del codi dependent. Per fer que una dependència sigui visible per a un mòdul dependent, cal marcar-la explícitament com a exportada.
dependencies: - io.ktor:ktor-client-core:2.2.0: exported: true - ../ui/utils: exported: trueTambé hi ha una forma abreujada:
dependencies: - io.ktor:ktor-client-core:2.2.0: exported - ../ui/utils: exportedAquí tens un exemple d’una dependència només de compilació i exportada:
dependencies: - io.ktor:ktor-client-core:2.2.0:scope: compile-onlyexported: trueVegeu la documentació completa sobre Dependencies.