# MuMu Player ADB port: conectar MuMu Player 12 a MAS

> Encuentra el puerto ADB de MuMu Player 12, conecta Macro Automation Studio, añade cada instancia como dispositivo y usa macros de MAS en lugar del grabador.

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

Esta guía explica cómo encontrar el MuMu Player ADB port de MuMu Player 12 y conectar la instancia a Macro Automation Studio (MAS), y en qué se diferencian las macros de MAS de la Grabación de operaciones de MuMu. Con el MuMu Player ADB port localizado, los pasos se centran en Windows; una sección corta cubre la versión para Mac.

## Antes de empezar

- MAS instalado y con sesión iniciada en Windows 10 u 11, o en un Mac con Apple Silicon. MAS es una descarga gratuita para la prueba; consíguelo en la [página de descarga](/download).
- MuMu Player 12 instalado desde [mumuplayer.com](https://www.mumuplayer.com/) 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 MuMu Player.

## 1. Instalar MuMu Player 12

1. Descarga MuMu Player 12 desde el sitio del fabricante y ejecuta el instalador.
2. Inicia MuMu Player 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 **Configuración** en la parte superior derecha de la ventana de MuMu Player.
2. Abre **Pantalla** y elige una 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. Guarda y reinicia la instancia cuando MuMu Player lo pida.

> [!WARNING]
> Cambiar la resolución después de capturar las plantillas desplaza todas las coincidencias. El propio grabador de MuMu tiene la misma regla.

## 3. Activar ADB en MuMu Player 12

La guía de ADB del fabricante no muestra ningún interruptor para MuMu Player 12. Una instancia en marcha responde a adb en su puerto sin ningún ajuste, así que lo que necesitas es el número de puerto:

- Para una sola instancia, abre el menú de la parte superior derecha de la ventana y elige **Diagnóstico de problemas**. Ahí aparece el puerto de depuración ADB.
- Para varias instancias, abre **MuMuPlayer Multi-instance 12** y haz clic en el icono ADB de una instancia en marcha para ver su puerto.

## 4. El MuMu Player ADB port y cómo lo busca MAS

MuMu Player 12 da a su instancia principal el puerto **16384** y cada instancia adicional suma 32: 16416, 16448 y así sucesivamente. Cuando un puerto está ocupado, MuMu suma 1, así que puede aparecer 16385. 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 `nemuheadless` o `mumu`.
- El puerto está entre 16384 y 16576, entre 26624 y 27264, es exactamente 7555, o es un puerto impar entre 5555 y 5599.
- El socket escucha en `127.0.0.1`, `0.0.0.0` o en todas las interfaces.

El rango de 16384 a 16576 cubre la instancia principal y las seis siguientes; el 7555 y el rango 5555 vienen de versiones antiguas de MuMu. Los puertos que coinciden aparecen en el diálogo **Añadir nuevo dispositivo** con la etiqueta `MuMu`, por ejemplo `16384 - MuMu`. MAS busca al abrir un grupo de dispositivos y cada vez que haces clic en **Actualizar**.

## 5. Conectar MuMu Player por ADB 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 `MuMu` de esta instancia. Haz clic en **Actualizar** si la lista está vacía.
5. Si el puerto que muestra **Diagnóstico de problemas** 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 MuMu Player

La **Grabación de operaciones** de MuMu graba toques y los repite desde un archivo, con tres condiciones de parada (**Ejecutar x veces y detener**, **Ejecutar durante xx tiempo y detener** y **Bucle infinito hasta detener a mano**) y un **Intervalo de ciclo**. El fabricante advierte de que la resolución al reproducir debe coincidir con la de la grabación. El archivo repite coordenadas fijas sin mirar la pantalla, así que una carga lenta, un aviso emergente o un botón que se movió rompen la secuencia, y solo funciona dentro de MuMu Player.

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 MuMu Player, en otros emuladores y en dispositivos en la nube sin cambios, porque MAS controla cada dispositivo por adb.

- Para reconstruir una grabación 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, o ejecutarla según un horario, lee [Bucles, condiciones de parada y programación](/docs/guides/loops-and-scheduling).

> [!NOTE]
> Termina cualquier Grabación de operaciones en marcha antes de iniciar un dispositivo en MAS. Los dos envían entrada a la misma pantalla y se interfieren.

## Varias instancias de MuMu

Abre **MuMuPlayer Multi-instance 12** desde el icono de herramientas de la parte superior derecha. **+Nueva** crea una instancia y **Ajustes del dispositivo** fija su rendimiento y su pantalla, así que da a todas las instancias la misma resolución. Cada instancia escucha en su propio puerto, 32 por encima del anterior. 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. A partir de la octava instancia, el puerto supera el 16576 y MAS deja de listarlo; añádelo con **Puerto personalizado**. Consulta [Grupos de dispositivos](/docs/device-groups) para argumentos y proxies por dispositivo.

## MuMu Player en Mac

MuMu también publica una versión para Mac con Apple Silicon. Ahí la guía del fabricante coloca ADB en la barra de menús: con un dispositivo en marcha, abre **Herramientas** y elige **Abrir ADB (número de puerto del dispositivo)**. La entrada muestra el puerto; el predeterminado vuelve a ser 16384. Si la búsqueda de MAS no lo lista, añádelo con **Puerto personalizado**.

MAS en un Mac necesita un binario de adb: lo busca dentro de su paquete de app, luego en tu PATH y luego en las carpetas de Homebrew. Si MAS informa de "ADB executable not found. Please install ADB using your package manager", instala adb con Homebrew y reinicia MAS:

```bash
brew install android-platform-tools
```

MAS siempre marca `127.0.0.1`, así que MuMu Player debe ejecutarse en el mismo Mac.

## Solución de problemas

### Puerto ADB de MuMu

MAS no lista ninguna entrada `MuMu`, o la entrada que lista pertenece a otra instancia.

- Lee el puerto en **Diagnóstico de problemas** o en el icono ADB de **MuMuPlayer Multi-instance 12** y compáralo con la tarjeta del dispositivo; corrígelo con **Editar dispositivo**.
- Cuenta desde 16384 en pasos de 32 por instancia, más uno cuando un puerto estaba ocupado (16385 en lugar de 16384).
- La instancia sigue arrancando, así que el puerto aún no está abierto. Espera a la pantalla de inicio y haz clic en **Actualizar**.
- El puerto está por encima de 16576 o fuera de la regla de búsqueda. Elige **Puerto personalizado** y escríbelo.

### MuMu ADB connect falla

La tarjeta del dispositivo muestra **Error** con "Failed to start device", el log dice "unable to connect to device" o adb imprime "cannot connect" o "connection refused".

- Nada escucha en ese puerto. Comprueba el número como se explica arriba y confirma que la instancia está en marcha.
- Un segundo servidor adb conserva una entrada obsoleta. Cierra otras herramientas que ejecuten su propio servidor adb, haz clic en **Detener**, reinicia la instancia y haz clic en **Iniciar**; MAS vuelve a conectar desde cero.
- `adb devices` muestra el puerto como `offline`. Reinicia la instancia; si sigue offline, reinicia MAS para que su servidor adb arranque limpio.
- La búsqueda informó de "Failed to scan emulator ports". Reinicia MAS y abre el diálogo de nuevo.

Para ver la respuesta bruta de adb, ejecuta `adb connect 127.0.0.1:16384` en una terminal. Hay más soluciones en [Solución de problemas de ADB](/docs/adb-troubleshooting).

### Bucle de macro en MuMu

Una grabación puesta en **Bucle infinito hasta detener a mano** no puede saber si el bucle debe continuar, así que sigue tocando después de alcanzar el objetivo o cuando aparece un aviso emergente. Una macro de MAS hace el bucle en Python con una condición de parada: una plantilla que aparece, un número leído por OCR o un recuento de pasadas. [Bucles, condiciones de parada y programación](/docs/guides/loops-and-scheduling) muestra los patrones. Si un bucle de MAS se atasca, abre **Logs** en la tarjeta del dispositivo: `ImageNotFoundError` y `TimeoutError` nombran el paso fallido, y la causa habitual es una resolución que ya no coincide con las plantillas.

## 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"MuMu 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.
