Guía
Empezar
De un directorio vacío a una app de Angular corriendo sobre vistas nativas, en la plataforma que elijas.
Qué hace falta
Sección titulada «Qué hace falta»Xcode con el runtime de simulador de la plataforma que quieras. tvOS y
visionOS traen el suyo aparte: xcodebuild -downloadPlatform tvOS.
tvOS, visionOS y watchOS piden además un toolchain nightly de Rust: sus
targets son de nivel 3 y no traen std precompilada.
rustup toolchain install nightlyrustup component add rust-src --toolchain nightlyEl SDK de Android, que se encuentra por ANDROID_HOME o donde suele estar,
y el NDK. Aquí no hay Gradle: an llama él mismo a aapt2, javac, d8
y apksigner.
Las dependencias de Material 3 se resuelven una vez:
python3 scripts/fetch-android-deps.pypython3 scripts/prepare-android-deps.pyLas herramientas de línea de comandos de Xcode y nada más. No hay simulador: la app corre en la máquina donde la compilas.
Instalar el CLI
Sección titulada «Instalar el CLI»-
Clona este repositorio y deja
anen el PATH:Ventana de terminal git clone https://github.com/nesgarbo/angular-nativecd angular-nativecargo install --path crates/an-cli -
Crea un proyecto de Angular, o usa uno que ya tengas:
Ventana de terminal npx @angular/cli@latest new mi-appcd mi-app -
Prepáralo:
Ventana de terminal an initAñade un manifiesto, un tsconfig para el build nativo, los dos paquetes del framework y un punto de entrada nativo. No toca ni
src/main.tsniangular.json, así queng buildyng servesiguen funcionando exactamente igual que antes. -
Añade una plataforma y arráncala:
Ventana de terminal an add ios && an iosan add tvos && an tvos .an add visionos && an visionos .Ventana de terminal an add android && an androidan wearos .Ventana de terminal an macos .
Desarrollar con refresco en caliente
Sección titulada «Desarrollar con refresco en caliente»an dev # simulador de iPhonean dev --android # emulador de Androidan dev --tvos # simulador de Apple TVan dev --visionos # simulador de Vision Proan dev --watchos # simulador de Apple Watchan dev --wearos # emulador de Wear OSan dev --macos # una ventana en este mismo Mac--macos es el distinto: no hay simulador, así que la app se abre en la máquina
que la está compilando y el servidor con el que habla está en esa misma máquina.
Al guardar un componente, su definición se cambia en la app que está corriendo. Te quedas en la misma pantalla, con lo que hubieras escrito y los temporizadores en marcha.
Tu primera plantilla
Sección titulada «Tu primera plantilla»<an-view [style.padding]="'16'" [style.gap]="'12'"> <an-text [fontSize]="28" [fontWeight]="'bold'">Ajustes</an-text>
<an-view [style.flexDirection]="'row'" [style.justifyContent]="'space-between'"> <an-text>Notificaciones</an-text> <an-switch [on]="avisar()" (onChange)="avisar.set($event)" /> </an-view>
<an-button [title]="'Guardar'" [variant]="'filled'" [accessibilityHint]="'guarda sin salir de la pantalla'" (press)="guardar()" /></an-view>Ese an-switch es un UISwitch en iOS y un MaterialSwitch en Android. El
layout es flexbox, calculado una vez en el núcleo y entregado a cada plataforma
como marcos absolutos.