- Confirmado: repo es unzip directo del APK, no apktool d output - Verificadas reglas STORED/DEFLATED inspeccionando APK manual 0.7.6 - META-INF: estrategia = excluir todo en build, apksigner regenera firmas - res/ tiene compresión mixta (172 STORED + 167 DEFLATED), pendiente correlar con extensión Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
6.8 KiB
Estado de la automatización — 2026-05-15
Resumen
Setup inicial en hacksito.com (/home/capitansito/oasis-auto/).
APK 0.7.6 manual publicada en 0asis.net/downloads/latest.apk.
Pipeline automático NO está activo todavía (falta resolver método de build).
Lo que YA funciona
Infraestructura (server hacksito.com)
/home/capitansito/oasis-auto/— workspace con subdirs:mobile/— clone degitea.laenre.net/hacklab/OASIS_MOBILE, configurado con identidadoasis-bot <bot@laenre.net>para commits automáticos..git/configcon chmod 600 (contiene credenciales gitea embebidas en URL).secrets/— chmod 700.oasis-release-key.jks— keystore NUEVO generado el 2026-05-15 (aliasoasis, validez 10000 días, SHA-256 fingerprint17:DD:F8:B7:...). El antiguo se perdió porque se olvidó la password.keystore.pass— chmod 600, contiene la password del keystore nuevo.
scripts/,prompts/,reports/,apks/,upstream-snapshots/,logs/— vacíos, pendientes de F1.
/var/www/0asis.net/downloads/— público.oasis-v0.7.6-20260515-pruebas.apk(138 MB, build manual subida por scp desde ransomsito)latest.apk→ symlink al anterior
Dependencias instaladas (sistema)
openjdk-17-jdk-headless17.0.17apktool2.7.0-dirtyapksigner0.9zipalignkeytool(viene con JDK)
Web 0asis.net
- 2 botones en verde neón añadidos en
index.htmlseccióngs-more-links(después de EXPLORE MORE):- DOWNLOAD APK →
/downloads/latest.apk - MOBILE SOURCE → repo gitea
- DOWNLOAD APK →
- CSS añadido en
styles.css: clase.gs-link-btn-greencon el tono neónrgba(57,255,20,...).
Lo que QUEDA pendiente
Hallazgos técnicos verificados esta sesión (importantes para retomar)
Estructura del repo OASIS_MOBILE confirmada: NO es output de apktool d. Es un unzip directo del APK. Indicios:
AndroidManifest.xmlestá en Android binary XML (no decodificado).res/con nombres acortados (0c.9.png,0M.xml) — optimización de release.- No hay
smali/, hayclasses.dexdirecto. kotlin/,DebugProbesKt.binen raíz tal cual están dentro del APK.
Consecuencia: se puede reempaquetar con zip o zipfile Python directamente sobre los archivos del repo, sin necesidad de APK base ni de apktool b.
Reglas de compresión confirmadas inspeccionando la APK manual 0.7.6 (oasis-v0.7.6-20260515-pruebas.apk):
- STORED:
resources.arsc,assets/dexopt/*,assets/nodejs-project.zip - DEFLATED:
AndroidManifest.xml,classes.dex,lib/*.so,kotlin/*,META-INF/*(los 3 de firma) res/mixto: 172 STORED + 167 DEFLATED. Patrón a verificar: probablemente imágenes (PNG/9.png) STORED y XML DEFLATED. Pendiente confirmar extensión-por-compresión corriendo el zipinfo más detallado en la APK manual.
META-INF: estrategia clara. El usuario tradicionalmente hacía zip -d "META-INF/*" borrando todo. La APK manual 0.7.6 publicada solo tiene 3 entradas META-INF (MANIFEST.MF, OASIS.SF, OASIS.RSA — las que añade apksigner). Los 33 archivos .version que están en el repo NO están en el APK firmado. Decisión: el build script debe excluir TODO META-INF/ del unsigned APK; apksigner regenera las firmas.
APK manual de referencia: /var/www/0asis.net/downloads/oasis-v0.7.6-20260515-pruebas.apk (138 MB, firmada con el keystore VIEJO que se perdió). Sirve como referencia para comparar compresión y estructura, NO como molde de build. Para futuras APK auto generadas, firma con keystore NUEVO → usuarios beta con la manual instalada tendrán que desinstalar+reinstalar al hacer el primer update auto.
Decisión bloqueante: método de build APK
El doc original (CONTEXT/cambio_apk_repack.txt) propone método quirúrgico con APK base como molde (oasis-v0.6.8.apk, 55 MB original sin modificar):
- cp APK base → tmp
- zip -d META-INF (firma vieja)
- crear nuevo
assets/nodejs-project.zipdesdenodejs-project/ - zip -0 (STORED) reemplazar el zip dentro del APK
- zipalign -p 4
- apksigner sign
El usuario NO quiere usar APK base como molde.
Alternativas estudiadas pero no implementadas:
apktool b: el repo NO tieneapktool.yml(requerido). Y el doc del propio user dice "no usar apktool b" por riesgo de comprimirresources.arscmal → "App not installed" en Android 7+. Apktool 2.7 modernos lo manejan correctamente pero está sin verificar.- Custom zip script en Python (pendiente): el repo NO es output de
apktool d(AndroidManifest.xml es binario, sinsmali/,res/con nombres acortados) — es ununzipdirecto del APK. Por tanto se podría reempaquetar conzipfilede Python aplicando compresión per-archivo según las reglas del doc línea 99-106:- STORED:
resources.arsc,assets/dexopt/*,assets/nodejs-project.zip - DEFLATED: el resto (
classes.dex,lib/*.so, AndroidManifest.xml,res/*,kotlin/*)
- STORED:
- Stripear de
META-INF/los archivos de firma (MANIFEST.MF,OASIS.SF,OASIS.RSA) antes de firmar — los 33.versionSÍ se mantienen.
Decisión a tomar próxima sesión: implementar el custom zip script en Python y validar con apksigner verify + instalación real en device.
Tareas pendientes (orden)
- Resolver build APK — escribir
build-apk.pyo equivalente, probar contra el código actual del repo, comparar APK resultante con la 0.7.6-20260515 manual (apksigner verify, listado de zip). - Escribir scripts scout/merger/builder — bash + prompts claude headless.
- Test pipeline end-to-end manual — simular un sync de epsylon.
- Configurar cron sábados 03:00 —
0 3 * * 6 /home/capitansito/oasis-auto/scripts/oasis-pipeline.sh. - Notificación de fallo — log + posible notificación email/Telegram (opcional).
Decisiones del usuario ya tomadas
- Política REVIEW: SALTARSE (solo SAFE se aplica, REVIEW se loggea pero no toca).
- Push automático directo a
mainen gitea (sin rama auto-merge). - Cron semanal sábados 03:00.
- NO usar API key Anthropic de pago: el cron invoca
claude -pcon la sesión existente. - NO crear
git remote upstreamhacia epsylon — usar snapshot por tarball (curl github.com/epsylon/oasis/archive/main.tar.gz).
Seguridad — pendiente de limpiar
CONTEXT/cambio_apk_repack.txtlínea 20 expone password del keystore antiguo (oasis123). Ya no se usa (nuevo keystore generado) pero queda en histórico de gitea. Considerar redactar y commit.
Cómo retomar
- Conectarte por SSH a
capitansito@hacksito.com. - Verificar estado:
ls /home/capitansito/oasis-auto/yls /var/www/0asis.net/downloads/. - Empezar por el script Python de build (
/home/capitansito/oasis-auto/scripts/build-apk.py). - Validar resultado:
apksigner verify oasis-test.apkdebe decir "Verifies" + instalación real en device. - Si pasa, seguir con scout/merger.