# LDPlayer ADB connect: puerto ADB y conexión con MAS

> Activa la depuración ADB en LDPlayer 9, localiza el puerto, conecta la instancia a Macro Automation Studio y cambia el grabador por macros que ven la pantalla.

Source: https://automationmacro.com/es/docs/ldplayer-setup-guide (Dispositivos, updated 2026-09-05)

Esta guía explica el proceso de LDPlayer ADB connect con Macro Automation Studio (MAS) en LDPlayer 9, y en qué se diferencian las macros de MAS del Grabador de operaciones de LDPlayer. LDPlayer ADB connect solo existe en Windows, porque LDPlayer se publica únicamente para Windows, así que todos los pasos de abajo son pasos de Windows.

## Antes de empezar

- MAS instalado y con sesión iniciada en Windows 10 u 11. MAS es una descarga gratuita para la prueba; consíguelo en la [página de descarga](/download).
- LDPlayer 9 instalado desde [ldplayer.net](https://www.ldplayer.net/) y abierto al menos una vez.
- La instancia arrancada del todo hasta la pantalla de inicio de Android.
- Las apps que quieres automatizar instaladas y con sesión iniciada dentro de LDPlayer.

## 1. Instalar LDPlayer 9

1. Descarga LDPlayer 9 desde el sitio del fabricante y ejecuta el instalador.
2. Inicia LDPlayer y espera a la pantalla de inicio.
3. Instala e inicia sesión en las apps que quieres automatizar antes de añadir el dispositivo a MAS.

## 2. Fijar una resolución

MAS compara las imágenes de plantilla píxel a píxel, así que elige una resolución una vez y mantenla.

1. Haz clic en el icono de engranaje de la barra de herramientas de LDPlayer para abrir **Configuración**.
2. Abre **Pantalla** y elige la opción de resolución personalizada.
3. Introduce un ancho de 540, un alto de 960 y un DPI de 240. Es la línea base de MAS; una macro que escribas tú espera la resolución que capturaste en Asset Lab.
4. Haz clic en **Guardar configuración** y reinicia la instancia cuando LDPlayer lo pida.

> [!WARNING]
> Cambiar la resolución después de capturar las plantillas desplaza todas las coincidencias, y una macro creada para otra resolución hace clic en el sitio equivocado.

## 3. Activar la depuración ADB en LDPlayer 9

LDPlayer mantiene ADB cerrado hasta que lo abres. El fabricante documenta el interruptor en Otros ajustes:

1. Abre **Configuración**.
2. Haz clic en **Otros ajustes**.
3. Pon **Depuración ADB** en **Abrir conexión local**.
4. Haz clic en **Guardar configuración**.
5. Reinicia la instancia. El ajuste se aplica después del reinicio.

> [!NOTE]
> **Abrir conexión local** es suficiente para MAS, que siempre se conecta desde el mismo ordenador. El permiso de root es una opción aparte en la misma página y MAS no lo necesita.

## 4. El puerto ADB de LDPlayer y cómo lo busca MAS

La primera instancia de LDPlayer escucha en el **5555**. MAS no usa `adb devices` para descubrir emuladores. Recorre los procesos en ejecución y conserva un puerto cuando se cumple todo esto:

- El nombre del proceso contiene `ldvboxheadless`, `ld9boxheadless`, `dnplayer`, `ldplayer` o `vboxnetnat`.
- El puerto es impar y está entre 5555 y 5599: 5555, 5557, 5559 y así sucesivamente.
- El socket escucha en `127.0.0.1`, `0.0.0.0` o en todas las interfaces.

Los puertos que coinciden aparecen en el diálogo **Añadir nuevo dispositivo** con la etiqueta `LD Player`, por ejemplo `5555 - LD Player`. MAS busca al abrir un grupo de dispositivos y cada vez que haces clic en **Actualizar**. Las siguientes instancias toman los siguientes puertos impares, y por eso la regla llega hasta el 5599: cubre 23 instancias en marcha.

## 5. LDPlayer ADB connect: conectar la instancia en MAS

1. Abre **Grupos de dispositivos** en la barra lateral y abre un grupo, o crea uno.
2. Haz clic en **Añadir dispositivo**.
3. Escribe un **Nombre del dispositivo** de hasta 50 caracteres.
4. En **Puerto**, elige la entrada `LD Player` de esta instancia. Haz clic en **Actualizar** si la lista está vacía.
5. Si LDPlayer usa un puerto que no encaja en la regla de arriba, elige **Puerto personalizado** y escríbelo. MAS acepta de 1024 a 65535.
6. Opcionalmente elige una **Macro de inicio**.
7. Haz clic en **Añadir dispositivo** y luego en **Iniciar** en la tarjeta del dispositivo.

La tarjeta muestra **Conectando** y después **En ejecución**. MAS inicia su propio servidor adb, elimina cualquier entrada obsoleta de `127.0.0.1:<port>` y ejecuta `adb connect` contra ella.

## Macros en LDPlayer

El **Grabador de operaciones** de LDPlayer (un botón de la barra de herramientas, o <kbd>Ctrl</kbd> + <kbd>8</kbd>) graba toques, deslizamientos y texto y los repite como un script. Sus ajustes de script ofrecen un **Bucle de ejecución** (**Hasta un número de bucles**, **Hasta una hora** o **Hasta detener a mano**), un **Intervalo de bucle** y **Aceleración**. Lo que no puede hacer es mirar la pantalla. Cada toque se repite en las coordenadas que grabaste, así que un retraso de carga, un aviso emergente o un botón que se movió mandan el siguiente toque a la nada, y el bucle sigue igualmente. Además, el script solo funciona dentro de LDPlayer.

Una macro de MAS es un script de Python que comprueba la pantalla antes de actuar. Encuentra un botón con coincidencia de plantillas, lee texto con OCR, espera con reintentos y se ramifica según lo que ve. El mismo script se ejecuta en LDPlayer, en otros emuladores y en un dispositivo en la nube sin cambios, porque MAS controla el dispositivo por adb.

- Para reconstruir una rutina grabada como una macro que mira la pantalla, sigue [Macros con reconocimiento de imagen](/docs/guides/image-recognition-macros).
- Para repetirla hasta que se cumpla una condición, con una condición de parada que el grabador no puede expresar, o para ejecutarla según un horario, lee [Bucles, condiciones de parada y programación](/docs/guides/loops-and-scheduling).
- Las macros del Marketplace se instalan como macros de MAS y se ejecutan en el dispositivo que les asignes.

> [!NOTE]
> Detén cualquier script del Grabador de operaciones antes de iniciar un dispositivo en MAS. Los dos envían entrada a la misma pantalla y se interfieren.

## Varias instancias de LDPlayer

Las instancias creadas en **LDMultiplayer** (el botón **Multijugador** de la barra de herramientas y luego **Nuevo reproductor** o **Clonar reproductor**) escuchan cada una en su propio puerto. Añade cada una como un dispositivo aparte en el mismo grupo de dispositivos, asigna una macro y un perfil de ajustes por dispositivo, y usa **Iniciar todos** y **Detener todos** en el grupo. Fija la resolución por instancia en la **Configuración** del gestor para que las plantillas coincidan en todas. Consulta [Grupos de dispositivos](/docs/device-groups) para argumentos y proxies por dispositivo.

## Solución de problemas

### LDPlayer ADB device not found

La tarjeta del dispositivo muestra **Error** con "Failed to start device", el log dice "unable to connect to device" o MAS no lista ninguna entrada `LD Player`. Revisa estas causas:

- **Depuración ADB** no está en **Abrir conexión local**, o la instancia no se reinició tras el cambio. Ajústalo, guarda y reinicia.
- La instancia sigue arrancando. Espera a la pantalla de inicio y haz clic en **Actualizar** e **Iniciar** otra vez.
- El puerto pertenece a otra instancia. Corrígelo con **Editar dispositivo** en la tarjeta.
- La búsqueda informó de "Failed to scan emulator ports". Reinicia MAS y abre el diálogo de nuevo.
- adb imprimió "connection refused" o "cannot connect" en los logs del dispositivo. Nada escucha en ese puerto; ejecuta `adb connect 127.0.0.1:5555` en una terminal para comprobarlo.

### LDPlayer aparece offline

`adb devices` lista `127.0.0.1:<port>  offline` y los comandos se quedan colgados. El demonio adb dentro de la instancia dejó de responder, normalmente tras una suspensión, una actualización o un segundo servidor adb en la máquina. Haz clic en **Detener** en la tarjeta, reinicia la instancia de LDPlayer, cierra otras herramientas que ejecuten su propio servidor adb y haz clic en **Iniciar**. MAS desconecta la entrada obsoleta y vuelve a conectar en cada inicio. Si sigue offline, reinicia MAS para que su servidor adb arranque limpio. Hay más soluciones en [Solución de problemas de ADB](/docs/adb-troubleshooting).

### Encontrar el puerto ADB de LDPlayer 9

La guía de ADB del fabricante no muestra ningún lugar de los ajustes de LDPlayer donde se imprima el puerto, así que léelo desde MAS o desde adb. En MAS, abre **Añadir nuevo dispositivo** y haz clic en **Actualizar**: cada puerto encontrado aparece con `LD Player` al lado, del más bajo al más alto, así que la primera instancia es la 5555 y las siguientes van en 5557 y 5559. En una terminal, `adb connect 127.0.0.1:5555` responde "connected" para un puerto activo y "cannot connect" para uno muerto. Una vez que conoces el puerto, se mantiene igual mientras inicies las instancias en el mismo orden.

### La macro no funciona

Dos problemas distintos comparten esta frase.

- Un script grabado de LDPlayer toca en el sitio equivocado o repite sin efecto. La resolución cambió desde la grabación, la app ahora carga más despacio o un aviso emergente tapa el botón. Los scripts grabados no pueden recuperarse de nada de esto; reconstruye la rutina como macro de MAS con [Macros con reconocimiento de imagen](/docs/guides/image-recognition-macros).
- Una macro de MAS se atasca o se detiene. Abre **Logs** en la tarjeta del dispositivo: `ImageNotFoundError` y `TimeoutError` nombran el paso que falló. Comprueba que la instancia va a la resolución con la que se capturaron las plantillas, que la tarjeta del dispositivo está en **En ejecución** y que ningún script de LDPlayer envía entrada al mismo tiempo.

## Contrólalo desde Python

Con la tarjeta en **En ejecución**, el `src/app.py` de una macro controla la instancia a través del paquete `mas`. MAS elige el puerto, así que los scripts nunca lo mencionan.

```python
import mas

size = mas.get_screen_size()
mas.log(f"LDPlayer screen is {size.width}x{size.height}")

match = mas.find_object_retry(1234, total_tries=3, time_sleep=2.0)
if match:
    mas.click(match.x, match.y)
```

Lee la [introducción al SDK](/docs/sdk) para conocer todos los espacios de nombres y [Controlar un emulador Android desde Python](/docs/guides/control-an-emulator-from-python) para un primer script completo.
