Cómo funciona

El flujo de descarga

  1. Autenticar. Consigue un token, ya sea anónimo desde el dispensador (rotando perfiles de dispositivo hasta que uno funcione) o desde tu cuenta de Google. Ver autenticación.
  2. Obtener detalles. Lee los metadatos de la app (versión, tamaño, splits) de la API protobuf de Google Play.
  3. Comprar. "Compra" la app gratuita para obtener autorización de descarga.
  4. Obtener la entrega. Pide las URLs de descarga del APK base, los split APKs, los archivos OBB y los asset packs.
  5. Descargar. Descarga los archivos en paralelo desde la CDN de Google, con barras de progreso. Los paquetes de Play Asset Delivery se descomprimen (gzip) sobre la marcha.

Pool de tokens

download y latest sacan los tokens de un pool de 5 tokens anónimos por arquitectura, país y perfil fijado, guardado en token-pool-{arch}[-{country}][-profile-{key}].json dentro del directorio de configuración (~/.config/goopdl salvo que definas GOOPDL_CONFIG_DIR o XDG_CONFIG_HOME, mira dónde se guardan los tokens).

El pool mantiene a goopdl por debajo del límite de Aurora, de unas 20 peticiones por hora. En el modo cuenta de Google no hay pool: cada proceso inicia sesión una vez y reutiliza el dispositivo que registró y guardó.

Encontrar la última versión

Google publica las actualizaciones por fases, por grupos (cohortes) de dispositivos. La cohorte depende del GSF ID (Google Services Framework ID) del dispositivo, que se asigna al emitir el token. Dos dispositivos pueden ver el mismo día versiones distintas de la misma app, por ejemplo la 434 y la 435.

Por eso latest pregunta con varios GSF IDs y se queda con el código de versión más alto:

download --version 434.0.0.44.74 funciona igual: sondea GSF IDs hasta que uno ve la versión pedida.

Perfiles de dispositivo

goopdl incluye perfiles de dispositivo como archivos .properties en goopdl/profiles/. Describen un dispositivo real (modelo, versión de Android, ABI, versión de Play Store) para que Google sirva la build correcta.

Durante la autenticación anónima, goopdl va rotando perfiles hasta que el dispensador acepta uno. Lista los perfiles con goopdl profiles y fija uno con --profile.

Arquitecturas

Opción ABI Dispositivos
arm64 (por defecto) arm64-v8a Móviles de 2017 en adelante, aproximadamente
armv7 armeabi-v7a Móviles antiguos de 32 bits
x86 x86 Emuladores y dispositivos Intel/AMD de 32 bits
x86_64 x86_64 Emuladores y dispositivos Intel/AMD de 64 bits
tv arm64-v8a / armeabi-v7a Android TV y dispositivos de streaming

download acepta varias separadas por comas (-a arm64,armv7) y las descarga una tras otra.

Editar esta página en GitHub ↗