ia-coba

Compilación y empaquetado

Requisitos

Firma de producción

Genera una llave y define en ~/.gradle/gradle.properties (nunca en el repositorio):

COBAEV_UPLOAD_STORE_FILE=/ruta/cobaev-upload.keystore
COBAEV_UPLOAD_STORE_PASSWORD=…
COBAEV_UPLOAD_KEY_ALIAS=cobaev
COBAEV_UPLOAD_KEY_PASSWORD=…

Sin estas propiedades el release se firma con la llave de debug (solo para pruebas).

APK (instalación directa)

cd android
./gradlew assembleRelease -PsplitApks=true
# android/app/build/outputs/apk/release/app-arm64-v8a-release.apk
# android/app/build/outputs/apk/release/app-universal-release.apk

La APK no incluye el modelo LLM: se copia al teléfono (USB/SD) y se importa desde el Gestor de modelos. Así una escuela puede instalar la app en muchos equipos y distribuir el modelo por separado.

AAB con Model Pack separado (Google Play)

./tools/package_model_pack.sh ~/modelos/Llama-3.2-1B-Instruct-Q4_K_M.gguf
# android/app/build/outputs/bundle/release/app-release.aab

Para probar el AAB localmente con bundletool:

bundletool build-apks --bundle=app-release.aab --output=cobaev.apks --local-testing
bundletool install-apks --apks=cobaev.apks

Tamaños de referencia

Componente Tamaño aprox.
App base (arm64, JS + libs nativas + ML Kit + ONNX + embeddings INT8) 70–90 MB
Llama-3.2-1B-Instruct Q4_K_M ~0.8 GB
Qwen2.5-1.5B-Instruct Q4_K_M ~1.1 GB

Comprobaciones antes de publicar

npm test && npm run typecheck && npm run lint && npm run check:offline

y la lista de pruebas en modo avión en al menos un equipo de gama baja (3–4 GB de RAM).