android: icono adaptativo con el logo de Oasis y nueva extraccion del backend en cada APK distinta

El icono es la isla de la app oficial; antes el lanzador la encogia dentro de un
circulo blanco (la oficial solo trae el PNG cuadrado) y el wrapper Gradle usaba un
hexagono amarillo. Ahora capa de fondo y capa delante, en Gradle y en sobre_oficial.sh.

La app oficial solo vuelve a extraer nodejs-project.zip si cambia
versionName.versionCode. Con el mismo commit, o con cambios sin commitear, la APK
nueva arrancaba con el backend anterior. El versionName lleva ahora una huella del
codigo.
This commit is contained in:
hacklab 2026-10-20 12:22:57 +02:00
parent d267d2befe
commit e3fcf2455d
16 changed files with 32 additions and 22 deletions

View file

@ -95,6 +95,18 @@ sed -i \
"$DEC/AndroidManifest.xml"
grep -rl "\"$PKG_DEV\.[A-Z_]*\"" "$DEC"/smali* | xargs -r sed -i -E "s|\"$PKG_DEV\.([A-Z_]+)\"|\"$PKG.\1\"|g"
# icono: el logo de la oficial, pero adaptativo. La oficial solo trae el PNG cuadrado
# y en Android 8+ el lanzador lo encoge dentro de un circulo blanco; con la capa de
# fondo y la de delante (app/src/main/res) la isla llena la forma del lanzador
say "icono adaptativo"
RES="$HERE/app/src/main/res"
mkdir -p "$DEC/res/mipmap-anydpi-v26" "$DEC/res/drawable"
cp "$RES/mipmap-anydpi-v26/ic_launcher.xml" "$DEC/res/mipmap-anydpi-v26/"
cp "$RES/drawable/ic_launcher_background.xml" "$DEC/res/drawable/"
for d in mdpi hdpi xhdpi xxhdpi xxxhdpi; do
cp "$RES/mipmap-$d/ic_launcher_foreground.png" "$DEC/res/mipmap-$d/"
done
# las de prueba (firmadas con la clave de depuracion) se marcan depurables: asi se
# puede inspeccionar la WebView desde chrome://inspect. Las de publicar, nunca
if [ -z "${OASIS_KEYSTORE:-}" ]; then
@ -104,8 +116,13 @@ fi
# version: la del dev por mil mas los commits de la rama, para que suba siempre
CODE_DEV="$(sed -n 's/^ versionCode: //p' "$DEC/apktool.yml")"
CODE="$(( CODE_DEV * 1000 + $(git -C "$REPO" rev-list --count HEAD) % 1000 ))"
sed -i -e "s/^ versionCode: .*/ versionCode: $CODE/" -e "s/^ versionName: .*/ versionName: $VERSION-hacklab/" "$DEC/apktool.yml"
say "version $VERSION-hacklab (codigo $CODE)"
# la app oficial solo vuelve a extraer nodejs-project.zip si cambia versionName.versionCode;
# con el mismo commit (o cambios sin commitear) se quedaba con el backend anterior. La
# huella del codigo en el nombre hace que cada APK distinta se extraiga de nuevo
HUELLA="$(cd "$REPO" && find src main.js package.json -type f -not -path '*/node_modules/*' -print0 | sort -z | xargs -0 sha1sum | sha1sum | cut -c1-8)"
NAME="$VERSION-hacklab.$HUELLA"
sed -i -e "s/^ versionCode: .*/ versionCode: $CODE/" -e "s/^ versionName: .*/ versionName: $NAME/" "$DEC/apktool.yml"
say "version $NAME (codigo $CODE)"
# --- montar, alinear y firmar --------------------------------------------------
say "montando"