OASIS_MOBILE/CONTEXT/cambio_apk_repack.txt
SITO f80319c25b docs: sync CONTEXT with v0.7.4 APK and correct apksigner flag
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-02 02:59:16 +02:00

104 lines
4.3 KiB
Text

===============================================================
CAMBIO: REEMPAQUETADO APK PARA ANDROID
Fecha: 2026-05-01
===============================================================
--------------------------------------------------------------
OBJETIVO
--------------------------------------------------------------
Distribuir los cambios CSS/JS del proyecto Node.js como APK
instalable en Android (probado: Pixel 6 GrapheneOS).
--------------------------------------------------------------
ARCHIVO CLAVE
--------------------------------------------------------------
/home/sito/oasis-v0.7.4-pruebas.apk <- APK actual (156 MB, v0.7.4)
/home/sito/oasis-v0.6.8-pruebas.apk <- APK anterior (106 MB, v0.6.8)
/home/sito/oasis-v0.6.8.apk <- APK original sin modificar
/home/sito/oasis-release-key.jks <- keystore de firma
alias: oasis | password: oasis123
--------------------------------------------------------------
METODO CORRECTO (IMPORTANTE)
--------------------------------------------------------------
NO usar "zip -r" para reempaquetar el APK entero — destruye
la compresión de resources.arsc (debe ser STORED) y cambia
la compresión de otros archivos críticos.
El método correcto es modificar SOLO el archivo que cambia:
1. Copiar el APK original como base:
cp oasis-v0.6.8.apk /tmp/oasis-temp.apk
2. Quitar la firma original (META-INF):
zip -d /tmp/oasis-temp.apk "META-INF/*"
3. Crear el nuevo bundle Node.js:
cd /home/sito/COFRE/CODERS/oasis_mobile/nodejs-project
zip -r /tmp/nodejs-project-new.zip nodejs-project/
4. Reemplazar SOLO assets/nodejs-project.zip con -0 (stored):
cd /tmp/apk_repack <- directorio con el APK extraido
zip -0 /tmp/oasis-temp.apk assets/nodejs-project.zip
5. Alinear:
~/Android/Sdk/build-tools/35.0.1/zipalign -v -p 4 \
/tmp/oasis-temp.apk /tmp/oasis-aligned.apk
6. Firmar (nota: --ks-key-alias no --ks-alias):
~/Android/Sdk/build-tools/35.0.1/apksigner sign \
--ks /home/sito/oasis-release-key.jks \
--ks-pass pass:oasis123 \
--key-pass pass:oasis123 \
--ks-key-alias oasis \
/tmp/oasis-aligned.apk
cp /tmp/oasis-aligned.apk /home/sito/oasis-v0.7.4-pruebas.apk
--------------------------------------------------------------
POR QUE FALLA SI SE REEMPAQUETA MAL
--------------------------------------------------------------
- resources.arsc debe ser STORED (sin comprimir) y alineado
en 4 bytes — Android 7+ lo exige. Si se comprime: "App not
installed".
- Las librerias .so en el APK original son DEFLATED (no STORED).
Si se cambia su compresion tambien puede fallar.
- La solucion: no tocar lo que no hace falta. Solo el .zip.
--------------------------------------------------------------
ESTRUCTURA CORRECTA (verificada)
--------------------------------------------------------------
STORED assets/dexopt/baseline.prof
STORED assets/dexopt/baseline.profm
DEFLAT classes.dex
DEFLAT lib/arm64-v8a/libc++_shared.so
DEFLAT lib/arm64-v8a/libnative-lib.so
DEFLAT lib/arm64-v8a/libnode.so
STORED assets/nodejs-project.zip <- nuestro bundle modificado
STORED resources.arsc <- CRITICO: debe ser STORED
--------------------------------------------------------------
INSTALACION EN ANDROID
--------------------------------------------------------------
1. Desinstalar la version original de Oasis primero
(firma distinta -> Android rechaza la instalacion)
2. Pasar el APK al dispositivo (Telegram Guardados, ADB, MTP)
3. Instalar desde el gestor de archivos
4. En GrapheneOS: permitir "Instalar apps desconocidas" para
el gestor de archivos la primera vez
--------------------------------------------------------------
VERIFICAR APK ANTES DE DISTRIBUIR
--------------------------------------------------------------
python3 -c "
import zipfile
with zipfile.ZipFile('oasis-v0.7.4-pruebas.apk') as z:
for i in z.infolist():
if i.filename in ['resources.arsc'] or i.filename.endswith('.so'):
t = 'STORED' if i.compress_type == 0 else 'DEFLAT'
print(t, i.filename)
"
-> resources.arsc debe ser STORED
-> .so deben ser DEFLAT (como en el original)
~/Android/Sdk/build-tools/35.0.1/apksigner verify --verbose oasis-v0.7.4-pruebas.apk
-> debe decir "Verifies"