almeira-web/scripts/build_clean_apk.py

57 lines
2.0 KiB
Python

import subprocess
import os
import shutil
import glob
dripzone_dir = r"c:\Users\Carlos\dev\almeira-web\dripzone-app"
android_dir = os.path.join(dripzone_dir, "android")
jbr_dir = r"C:\Program Files\Android\Android Studio\jbr"
print("[1] Limpiando APKs recursivos de carpetas públicas y assets...")
patterns = [
os.path.join(dripzone_dir, "public", "*.apk"),
os.path.join(android_dir, "app", "src", "main", "assets", "public", "*.apk"),
os.path.join(android_dir, "app", "build", "intermediates", "assets", "debug", "mergeDebugAssets", "public", "*.apk")
]
for pat in patterns:
for f in glob.glob(pat):
try:
os.remove(f)
print(f" -> Eliminado: {f}")
except Exception as e:
print(f" [Warn]: {e}")
print("[2] Sincronizando Capacitor con public limpio...")
subprocess.run(["npx.cmd", "cap", "sync", "android"], cwd=dripzone_dir, check=True)
# Doble chequeo: asegurar que ningún .apk quedó en assets
assets_public = os.path.join(android_dir, "app", "src", "main", "assets", "public")
if os.path.exists(assets_public):
for f in os.listdir(assets_public):
if f.endswith(".apk"):
os.remove(os.path.join(assets_public, f))
print(f" -> Eliminado remanente: {f}")
print("[3] Compilando APK limpio con Gradle...")
env = os.environ.copy()
env["JAVA_HOME"] = jbr_dir
res = subprocess.run(
["cmd.exe", "/c", "gradlew.bat", "assembleDebug"],
cwd=android_dir,
env=env,
capture_output=True,
text=True
)
if res.returncode == 0:
src_apk = os.path.join(android_dir, "app", "build", "outputs", "apk", "debug", "app-debug.apk")
dst1 = os.path.join(dripzone_dir, "public", "DripZone.apk")
dst2 = r"c:\Users\Carlos\dev\almeira-web\DripZone_Actualizado.apk"
shutil.copy2(src_apk, dst1)
shutil.copy2(src_apk, dst2)
size_mb = os.path.getsize(dst1) / (1024 * 1024)
print(f"\n[OK] APK LIMPIO Y OPTIMIZADO CREADO CON EXITO! Tamano: {size_mb:.2f} MB")
else:
print("[ERROR] Error en compilacion:\n", res.stderr[-1000:] if res.stderr else res.stdout[-1000:])