89 lines
3.8 KiB
Markdown
89 lines
3.8 KiB
Markdown
# Caudal para Android
|
|
|
|
**Estado: publicada desde la 0.3.5.** Probada en un teléfono: arranque, bloqueo
|
|
con huella o PIN, datos que se conservan, ficheros que se eligen y se guardan,
|
|
giro de pantalla, tema claro y oscuro, y enlace con un Caudal en StartOS por la
|
|
red de casa y, fuera de casa, por `.onion` con Orbot.
|
|
|
|
## Qué es
|
|
|
|
La misma aplicación que en un ordenador, sin reescribir nada: el programa de
|
|
Python (`programa/cartera`) va dentro de la aplicación gracias a
|
|
[Chaquopy](https://chaquo.com/chaquopy/), atiende solo en el propio teléfono
|
|
(`127.0.0.1`) y se enseña en una ventana web. Los datos viven en la carpeta
|
|
privada de la aplicación.
|
|
|
|
- `app/build.gradle.kts`: versiones, dependencias de Python y la copia del
|
|
programa (sin la carpeta de entidades concretas) antes de empaquetar.
|
|
- `app/src/main/python/caudal_android.py`: arranca el servidor de Caudal.
|
|
- `app/src/main/java/com/huveme/caudal/MainActivity.kt`: pide la huella o el
|
|
PIN, enseña la página, elige ficheros para ella y guarda los que descarga.
|
|
|
|
## En qué se diferencia de las otras versiones
|
|
|
|
- **Se entra con la huella o el PIN del teléfono**, cada vez que la aplicación
|
|
vuelve a primer plano.
|
|
- **No hay «copia cifrada en tu servidor git»**: usa los programas `gpg` y
|
|
`git`, que en Android no existen. Quedan la copia de seguridad cifrada con
|
|
contraseña y sincronizar con otro Caudal.
|
|
- **Un nodo con dirección `.onion`** necesita Orbot en el teléfono.
|
|
- Las copias automáticas del sistema (nube del fabricante, traspaso a otro
|
|
teléfono) están desactivadas: las copias las hace Caudal, cifradas.
|
|
|
|
## Enlazar con tu Caudal del servidor
|
|
|
|
En «Sincronizar con otro Caudal», el botón «Leer el QR del servidor con la
|
|
cámara» rellena la dirección de casa, la `.onion` (si el servidor la tiene) y
|
|
el código (lector ZXing, sin servicios de Google; pide permiso de cámara la
|
|
primera vez). En StartOS el QR lleva solas las direcciones que da el sistema;
|
|
en otros servidores se escriben una vez en «Cambiar las direcciones». Si el
|
|
servidor usa su propia autoridad (StartOS), elige su certificado raíz como
|
|
fichero: se guarda junto a los datos de la aplicación.
|
|
|
|
Se prueba primero la dirección de casa y, si no responde, la `.onion` por el
|
|
proxy de Orbot (`127.0.0.1:9050`). Vale cualquier modo de Orbot (VPN, proxy o
|
|
superusuario) mientras su puerto SOCKS siga en 9050, el de fábrica.
|
|
|
|
## Pendiente
|
|
|
|
- Icono adaptable.
|
|
- Opcional: cifrar los datos con una llave del chip de seguridad del teléfono
|
|
(hoy los protege el cifrado del propio Android).
|
|
|
|
## Construir
|
|
|
|
Hace falta el SDK de Android (plataforma 35), Java 17 y, para Chaquopy, un
|
|
`python3.12` en el PATH del equipo que construye.
|
|
|
|
```
|
|
cd empaquetado/android
|
|
gradle wrapper # una vez, crea ./gradlew
|
|
./gradlew assembleDebug # la de pruebas: app/build/outputs/apk/debug/
|
|
```
|
|
|
|
Para una versión firmada, crea `firma.properties` junto a este fichero (no se
|
|
versiona) y `./gradlew assembleRelease`:
|
|
|
|
```
|
|
storeFile=/ruta/a/tu/almacen.jks
|
|
storePassword=…
|
|
keyAlias=caudal
|
|
keyPassword=…
|
|
```
|
|
|
|
La clave de firma de Android es para siempre: quien instale una versión solo
|
|
podrá actualizar a otra firmada con la misma. Guárdala como la clave PGP. Su
|
|
huella está en `VERIFICAR.md`.
|
|
|
|
Sin `firma.properties`, `assembleRelease` deja un APK sin firmar
|
|
(`app-release-unsigned.apk`, ya alineado) que se puede firmar después en otro
|
|
equipo, sin que la clave pase por el que construye:
|
|
|
|
```
|
|
apksigner sign --ks almacen.p12 --ks-key-alias caudal --v4-signing-enabled false --out caudal-X.Y.Z-android.apk app-release-unsigned.apk
|
|
```
|
|
|
|
(`--v4-signing-enabled false`: sin él, `apksigner` deja al lado un
|
|
`.apk.idsig` que no se publica y que el manifiesto recogería.)
|
|
El APK se publica además con su manifiesto y firma PGP
|
|
(`empaquetado/firmar-version.sh`, ver `VERIFICAR.md`).
|