“Pero es imposible correr apps sin los servicios de Google” — la mentira más repetida del Android. Esto es exactamente lo que hice, pieza por pieza, en un Moto G4 (Android 7.0, root con Magisk). Verificado con reboots, no teoría.
| Pieza | Qué es |
|---|---|
| Magisk module “microg-hide-gms” | Borra systemless la Play Store, Google Play Services, Google Framework y toda la basura Google del /system — sin tocar la partición real |
| Probado y descartado: sin firma de Google real, las apps lo bloquean peor que a nada (WhatsApp y DeepSeek) — ver Fase 4. El que queda es FakeStore | |
| FakeStore | Un muñeco de 717KB con nombre com.android.vending que solo responde verificaciones de licencias. No es la Play Store. No tiene tienda. No actualiza nada. |
| Aurora Store | Cliente anónimo de la Play Store (sin cuenta Google) — de ahí salen las apps |
| F-Droid + APKs manuales | Apps open-source y directos de GitHub |
Resultado verificado tras reboots:
$ pm list packages | grep -E 'vending|gms|gsf'
package:com.android.vending # SOLO FakeStore (717KB — no hay tienda)
package:com.motorola.pgmsystem2 # Motorola, coincide el nombre, no es Google
# Play Store, GMS y GSF: NO EXISTEN como paquete
$ pm list packages | grep dimowner
package:com.dimowner.audiorecorder # pero las apps sí funcionan
Un Moto G4 con Android 7.0 (2016) que:
pm disable dura hasta que Google vuelve a activarlas).La solución real no era limpiar el teléfono. Era cortarle el cordón umbilical a Google.
su funciona).adb connect 192.168.0.65:5555
/mnt/linux2/backup-moto-g4/ (sdcard completo + listas de apps y módulos).Reset de fábrica normal (Settings → Backup & reset). Pero el reset borra todo: la app de Magisk, el ADB WiFi, todo.
Verificado con escaneo de puertos (nmap -p- 192.168.0.65): el celular estaba en la red con cero puertos abiertos. Un ladrillo elegante. Sin cable USB a mano, la única salida era 100% desde el celular:
En el navegador del celular, bajá e instalá el Magisk Manager: https://topjohnwu.github.io/Magisk/ (permite “fuentes desconocidas” cuando lo pida). La clave: el root no murió con el reset — el binario de Magisk vive en la boot image; solo desapareció la app que aprueba los pedidos su. Instalás la app y el sistema vuelve a poder preguntar “¿otorgar root?”.
Bajá Termux desde F-Droid (el de Play Store está muerto): https://f-droid.org/packages/com.termux/
Truco real usado: como el celular no llegaba bien a GitHub/F-Droid, los APKs se sirvieron desde el PC en la misma red con
python3 -m http.server 8888 --directory /tmp/opencode/apksy desde el navegador del celular se abrióhttp://<IP-del-PC>:8888/— HTTP plano, cero JS, el navegador de 2016 lo traga entero.
Abrí Termux y ejecutá:
pkg install android-tools
su
setprop service.adb.tcp.port 5555
stop adbd
start adbd
Cuando Termux lo pida, otorgá el permiso root desde Magisk Manager.
Desde el PC: adb connect 192.168.0.65:5555 — control total recuperado. De ahí en adelante lo hice todo yo por WiFi.
setprop service.adb.tcp.port 5555 + reiniciar adbd = ADB por WiFi sin cable, sin Developer options, sin nada más que root. Después quedó permanente (persist.adb.tcp.port=5555, sobrevive reboots — verificado).
Y rápido, antes de que la Play Store de fábrica se auto-actualice de nuevo (el ciclo empezó desde cero con el reset), vino lo importante:
Por qué NO sirve pm disable:
Investigado en XDA/Reddit: los servicios de Google reactivan sus apps hermanas automáticamente. Gmail deshabilitado → GMS lo re-habilita al rato. Es un sistema inmune.
Por qué NO se puede borrar de /system:
/systemes read-only (eCryptfs en Android 7). Borrar de verdad requiere remontar rw = perder OTA = riesgo de brick.
Lo que sí funciona: whiteouts de Magisk. El módulo crea archivos vacíos .replace que Magisk “monta por encima” del sistema real. El sistema ve directorios vacíos — la app no existe, pero /system intacto y el cambio es 100% reversible (borrar el módulo = Google vuelve).
/data/adb/modules/microg-hide-gms/
├── system/priv-app/GmsCore/.replace # Google Play Services
├── system/priv-app/Phonesky/.replace # ← LA PLAY STORE
├── system/priv-app/GoogleServicesFramework/.replace # GSF
├── system/app/Music2/.replace # Play Música
├── system/app/Hangouts/.replace
├── system/app/Videos/.replace # Play Películas
├── system/app/Gmail2/.replace
└── system/app/CalendarGoogle/.replace # Calendario Google
Instalado, reboot, y verificado:
$ pm list packages | grep -E 'vending|gms|music|talk|videos|gmail'
package:com.motorola.pgmsystem2 # coincide 'gms', es Motorola
(solo eso y TalkBack AOSP, que después salió en la limpieza final — cero GMS/Play)
Play Store desaparecida para siempre. Sin paquete = sin auto-updates = sin la causa raíz del lag.
Al instalar microG apareció:
INSTALL_FAILED_UPDATE_INCOMPATIBLE:
Package com.google.android.gms signatures do not match the previously installed version
El package manager recuerda la firma de Google aunque el APK ya no exista. Solución: cirugía directa en /data/system/packages.xml (con backup + validación XML):
# eliminar los bloques <package> y <updated-package> de com.google.android.gms
pat = re.compile(r'<package name="com\.google\.android\.gms"[^>]*>.*?</package>', re.S)
xml_nuevo = pat.sub('', xml_viejo)
ET.fromstring(xml_nuevo) # validar que el XML no quedó roto
Push de vuelta, chown system:system; chmod 660, reboot. Registro limpio.
(Lo mismo para GSF — com.google.android.gsf era dueño de permisos GOOGLE_AUTH.* que microG necesita declarar → INSTALL_FAILED_DUPLICATE_PERMISSION. Mismo tratamiento: whiteout + reboot.)
microG es el reemplazo open-source de Google Play Services: check-in de dispositivo, framework de auth, API GmsCore, cero auto-updates, cero drain de batería. Suena perfecto. Lo instalé (v0.3.17 — la última release, verificada)… y apareció la trampa:
W GooglePlayServicesUtil: com.deepseek.chat requires Google Play services, but their signature is invalid.
W PlayServicesImpl: Connection result: SERVICE_INVALID
Las apps no preguntan “¿existe Google Play Services?” — preguntan "¿está firmado por Google?". microG viene firmado por la llave de microG, así que la respuesta es SERVICE_INVALID, y ahí cada app reacciona peor que si no hubiera nada:
| App | Con microG (firma inválida) | Sin microG (servicios ausentes) |
|---|---|---|
| ❌ Bloqueo duro: “WhatsApp no se ejecuta sin los servicios de Google Play” | ✅ Modo Huawei: ofrece omitir la copia de Google Drive y sigue — 80 contactos cargados, verificado | |
| DeepSeek | ❌ Botón “Continue with Google” → “login failed” | ✅ Login directo con correo y contraseña — verificado |
Paradoja: microG empeoraba las cosas. Sin él, las apps ven SERVICE_MISSING (tolerable — así corren los Huawei sin Play Store); con él, ven SERVICE_INVALID (bloqueo). Al día siguiente del install ya estaba desinstalado:
$ pm uninstall com.google.android.gms
Success
Queda FakeStore como único acompañante: a las apps solo les importa que com.android.vending responda el servicio de licencias, y eso no depende de la firma de Google (Fase 5).
Si algún día una app exige firma de Google de verdad, la solución conocida es signature spoofing (Xposed + FakeSignature, o ROMs como LOS4microG). En un ROM stock sin eso: menos es más.
Muchas apps (DeepSeek incluida) exigen encontrar com.android.vending instalado — no para comprar nada, sino porque llaman al servicio de licencias (ILicensingService) al arrancar. Sin eso:
“Something went wrong. Check that Google Play is enabled on your device…”
La solución de microG: FakeStore — un APK de 717KB que:
com.android.vending (las apps lo encuentran)Es un muñeco con credenciales falsas, no la Play Store. Google ni se entera.
Tras instalar FakeStore, DeepSeek seguía fallando. El logcat mostraba:
W ActivityManager: Permission Denial: Accessing service
ComponentInfo{com.android.vending/...LicensingService}
requires com.android.vending.CHECK_LICENSE
Análisis:
CHECK_LICENSE con protectionLevel=normal (auto-concedible) ✓pm grant no sirve: “Permission is not a changeable permission type” (los normales no son runtime-grantables).Solución: reinstalar DeepSeek. En una instalación en frío, el pass de concesión corre con el permiso ya definido → granted=true:
com.android.vending.CHECK_LICENSE: granted=true
$ am start -n com.deepseek.chat/.MainActivity
# PANTALLA: com.deepseek.chat.MainActivity
# "Continue with Google | Continue with Password | Sign up" ← LOGIN REAL
DeepSeek funcionando con FakeStore. El “Something went wrong” era solo eso: un permiso.
| App | Origen |
|---|---|
| WhatsApp, Telegram, MercadoPago | Aurora Store — cliente anónimo de la Play Store. Usa tokens de cuenta descartables de Google, sin registrar tu dispositivo, sin cuenta propia. Misma APK que la Play, cero intermediario tuyo |
| DeepSeek | Aurora Store (APKs split armeabi_v7a — el G4 es 32-bit) |
| SimplyTranslate, Jellyfin, PipePipe, LibreraPDF, K-9 | F-Droid (índice local, verifico minSdk antes de bajar — Android 7 = API 24) |
| Audio Recorder (botón rojo, M4A) | GitHub Releases directo (Dimowner v0.9.99 = última con minSdk 23) |
| FakeStore | GitHub microg/GmsCore releases (microG v0.3.17 probado y descartado — ver Fase 4) |
El teléfono actualiza apps cuando TÚ quieres, con un toque en Aurora/F-Droid. Nunca solo. Nunca de noche. Nunca “porque Google decidió”.
persist.adb.tcp.port=5555): sobrevive reboots, no necesito cables.sendevent en /dev/input/event2 (long-press 0.8s → 10 micro-movimientos → release). 12 iconos colocados en la cuadrícula exacta./data/system/users/0/wallpaper + ajuste de wallpaper_info.xml + reboot. Dark cyberpunk activo y verificado por md5.dpm set-active-admin sin tocar Settings. Probada: mWakefulness=Dozing ✓.QUITADO para siempre: Play Store, GMS, GSF, Google Login Service,
Play Música, Play Películas, Hangouts, Gmail,
Calendario Google (whiteouts, verificados post-reboot)
LIMPIEZA FINAL: 16 apps Google muertas sin GMS: YouTube, Drive,
Maps, Fotos, Cloud Print, backup/sync de Google,
TalkBack, TTS, 5 teclados y launcher duplicado
QUEDA: FakeStore (solo licencias) + infraestructura AOSP
(webview, teclado activo, reloj, calculadora) y
GEL como launcher — el último Google con pie en casa
APPS INSTALADAS: WhatsApp, Telegram, DeepSeek, MercadoPago, Aurora,
SimplyTranslate, Jellyfin, PipePipe, LibreraPDF,
K-9 Mail, Grabador de Audio, Lock
HOME SCREEN: 12 iconos + widget, todo en su celda
WALLPAPER: dark cyberpunk 1080×1920 (root-written, md5 idéntico post-reboot)
El teléfono más lento de 2016 con el sistema más limpio que puede tener en 2026. Google lo pierde, tú lo ganas.
Actualizado: los dos casos temidos llegaron de verdad y se resolvieron. WhatsApp exigía firma de Google y bloqueaba con microG instalado — quitándolo, corre en modo “sin Google Play” (80 contactos verificados). DeepSeek exige la licencia de Play → FakeStore la responde; su login se hace con correo y contraseña, sin Google de por medio. Sigue en pie un solo pendiente gordo: si alguna app exige firma de Google real (error SERVICE_INVALID), toca signature spoofing (Xposed FakeSignature en Android 7) o directamente no usar esa app. Y el último paso de des-Googling posible: reemplazar el launcher GEL por uno de F-Droid para poder matar también googlequicksearchbox.