wiki: como se publica una version

Compilar recoge release.sh y el workflow de gitea: que verifica y por que, de
donde salen las versiones, y por que la release sale como borrador.
SITO 2026-08-19 11:17:04 +02:00
parent 2b9c6a2280
commit 10b4ff1ecd
2 changed files with 44 additions and 2 deletions

@ -48,6 +48,48 @@ dependencias son idénticas entre versiones.
Si algún día lo rellenas con un `npm install` normal, la APK se llevará binarios de
Linux de escritorio que en Android no sirven, y pesará diez veces más.
## Publicar una versión
`scripts/release.sh` hace el ciclo entero y **siempre igual**, se lance a mano o
desde un runner:
```sh
export JAVA_HOME=/opt/android-studio/jbr # un JDK con javac
export ANDROID_HOME=$HOME/Android/Sdk
export OASIS_APK_BASE=../oasis-v0.8.7.apk # solo la primera vez
cd android
./scripts/release.sh # compila y verifica, sin publicar
./scripts/release.sh --release # firmada
./scripts/release.sh --release --publish # y la sube a las releases
```
Verifica cuatro cosas antes de dar nada por bueno, y son las que han cazado fallos
reales en esta rama:
| Comprueba | Por qué |
|---|---|
| Que la APK lleva `nodejs-project.zip` | Una APK sin backend compila, instala y arranca igual |
| Que lleva `libnode.so` | Sin él no hay Node que ejecutar |
| Que declara CAMERA y RECORD_AUDIO | Si se pierden, adiós videollamadas, y no se nota hasta pulsar Llamar |
| Que la firma es válida | Y enseña la huella para publicarla |
Las versiones no se editan a mano: el **versionCode** sale del número de commits (sube
solo, y Android exige que suba) y el **versionName** de `package.json`, que es de donde
lo saca también el backend —así la versión que muestra la aplicación no puede
discrepar de la de la APK—.
La release se crea **como borrador**. Publicar una APK firmada sin que nadie la mire no
debería poder pasar por descuido.
### Desde gitea
`.gitea/workflows/apk.yml` hace lo mismo desde un runner. **No se dispara con cada
commit** —la APK son más de 100 MB— sino a mano o al crear un tag `v*`.
El runner necesita JDK 17 con compilador, el SDK de Android, node, zip y unzip. Uno
pelado no vale. Los secretos que hay que dar de alta están en la cabecera del fichero.
## Firmar
La contraseña **nunca** en el repositorio ni en `gradle.properties`:

@ -22,6 +22,8 @@ Sin fechas: esto se hace cuando se puede.
- **Selector de ficheros** del navegador interno, que faltaba en el envoltorio propio.
- **[Varias identidades](Identidades)** en el mismo móvil, con selector en los
ajustes y aviso cuando dos comparten clave.
- **[Construcción automatizada](Compilar)**: un script hace el ciclo entero
—empaquetar, compilar, verificar y publicar— y un workflow de gitea lo lanza.
## En curso
@ -31,8 +33,6 @@ Sin fechas: esto se hace cuando se puede.
## Sin empezar
- **Automatizar la construcción**: que una versión nueva del proyecto oficial genere
la APK firmada y publicada sola.
- **Limpiar los metadatos EXIF** en el móvil (ver [Limitaciones](Limitaciones)).
## Bloqueado, y por qué