# MEmu ADB: conectar o MEmu Play ao MAS pela porta 21503

> Conecte o MEmu Play ao Macro Automation Studio pelo ADB na porta 21503, adicione-o como dispositivo, corrija o erro offline e rode macros no lugar do gravador.

Source: https://automationmacro.com/pt-BR/docs/memu-setup-guide (Dispositivos, updated 2026-09-05)

Este guia mostra como conectar o MEmu Play ao Macro Automation Studio (MAS) pelo MEmu ADB, e como as macros do MAS diferem do gravador de macros do MEmu. O MEmu só existe para Windows, então todos os passos abaixo são passos de Windows.

## Antes de começar

- MAS instalado e com login feito no Windows 10 ou 11. O MAS é um download gratuito para o teste; pegue-o na [página de download](/download).
- MEmu instalado a partir de [memuplay.com](https://www.memuplay.com/) e aberto pelo menos uma vez.
- A instância totalmente iniciada até a tela inicial do Android.
- Virtualização ativada na BIOS para uma instância estável.

## 1. Instalar o MEmu

1. Baixe o MEmu no site do fabricante e rode o instalador.
2. Abra o MEmu e aguarde a tela inicial.
3. Faça login nos apps que você quer automatizar antes de adicionar o dispositivo ao MAS.

## 2. Definir uma resolução fixa

O MAS compara imagens template pixel a pixel. Abra as configurações do MEmu, escolha uma resolução fixa e mantenha. Macros escritas contra a base do MAS esperam **540x960** em retrato a **240 DPI**; uma macro que você mesmo escreve espera a resolução que você capturou no Asset Lab. Reinicie a instância se o MEmu pedir.

> [!WARNING]
> Mudar a resolução depois de capturar os templates desloca todas as correspondências. Escolha uma resolução uma vez e mantenha.

## 3. Ativar o ADB no MEmu

A documentação oficial do MEmu não mostra nenhum botão de ADB. Uma instância em execução encaminha a porta adb do Android para o host como `127.0.0.1:21503`, que é o endereço usado no guia de linha de comando do próprio MEmu. Se a sua build do MEmu tiver uma opção de ADB ou de desenvolvedor em Configurações, deixe-a ligada. Abra a instância e aguarde a tela inicial antes de continuar.

## 4. A porta ADB do MEmu e como o MAS a escaneia

A instância padrão do MEmu escuta em **21503**. O MAS não usa `adb devices` para descobrir emuladores. Ele escaneia os processos em execução e mantém as portas que seguem estas regras:

- O nome do processo contém `memuheadless` ou `memuhyper`.
- A porta é 21503 ou maior, termina em 3 e está abaixo de 30000. Portas como 21513 e 21523 também batem, portanto.
- O socket escuta em `127.0.0.1`.

As portas que batem aparecem na caixa de diálogo Adicionar dispositivo com o rótulo `MEmu`, por exemplo `21503 - MEmu`. O escaneamento roda quando você abre um grupo de dispositivos e a cada clique em **Atualizar**.

## 5. Conectar o MEmu Play pelo ADB no MAS

1. Abra **Grupos de dispositivos** na barra lateral e abra um grupo, ou crie um.
2. Clique em **Adicionar dispositivo**.
3. Digite um **Nome do dispositivo** com até 50 caracteres.
4. Em **Porta**, escolha a entrada `MEmu` desta instância. Clique em **Atualizar** se a lista estiver vazia.
5. Se o MEmu usar uma porta que não segue a regra acima, escolha **Porta personalizada** e digite-a. O MAS aceita de 1024 a 65535.
6. Se quiser, escolha uma **Macro inicial**.
7. Clique em **Adicionar dispositivo** e depois em **Iniciar** no card do dispositivo.

O card mostra **Conectando** e depois **Em execução**. O MAS inicia seu servidor adb, remove qualquer entrada antiga de `127.0.0.1:<port>` e roda `adb connect` contra ela.

## Macros no MEmu

O gravador de macros do MEmu captura toques e deslizes em coordenadas fixas e os repete, opcionalmente em repetição. Ele não olha para a tela, então um carregamento lento, um pop-up ou um botão que mudou de lugar quebra a sequência, e a rotina só funciona dentro do MEmu.

Uma macro do MAS é um script Python que verifica a tela antes de agir. Ela encontra um botão com template matching, lê texto com OCR, espera com tentativas repetidas e ramifica conforme o que vê. O mesmo script roda no MEmu, em outros emuladores e em um dispositivo na nuvem sem alterações, porque o MAS controla o dispositivo por adb.

- Para reconstruir uma rotina gravada como uma macro que enxerga a tela, siga [Macros com reconhecimento de imagem](/docs/guides/image-recognition-macros).
- Para colocá-la em loop até uma condição ser atendida, ou rodá-la em um agendamento, leia [Loops, condições de parada e agendamento](/docs/guides/loops-and-scheduling).
- As macros do Marketplace são instaladas como macros do MAS e rodam no dispositivo que você atribuir.

> [!NOTE]
> Pare o gravador do MEmu antes de iniciar um dispositivo no MAS. Os dois enviam entrada para a mesma tela e vão interferir um no outro.

## Várias instâncias do MEmu

Cada instância do gerenciador de multi-instâncias do MEmu escuta na própria porta. Adicione cada uma como um dispositivo separado no mesmo grupo de dispositivos, atribua uma macro e um perfil de configurações por dispositivo e use **Iniciar todos** e **Parar todos** no grupo. Veja [Grupos de dispositivos](/docs/device-groups) para argumentos e proxies por dispositivo.

## Solução de problemas

### MEmu ADB connect

O card do dispositivo mostra **Erro** ou "Failed to start device", ou o MAS não lista nenhuma entrada `MEmu`. Percorra estas causas:

- A instância ainda está iniciando. Aguarde a tela inicial, depois clique em **Atualizar** e inicie de novo.
- A porta não segue a regra de escaneamento, então o MAS a pulou. Use **Porta personalizada** com o número que o MEmu usa.
- A porta pertence a outra instância. Corrija com **Editar dispositivo** no card.
- O escaneamento informou "Failed to scan emulator ports". Reinicie o MAS e abra a caixa de diálogo de novo.
- O adb imprimiu "connection refused" ou "cannot connect" nos logs do dispositivo. Nada está escutando nessa porta; reinicie a instância e confira o número de novo.

### MEmu ADB device offline

O adb marca um dispositivo como `offline` quando o daemon adb dentro da instância para de responder, o que costuma acontecer depois de uma suspensão, uma atualização ou um segundo servidor adb na máquina. Clique em **Parar** no card, reinicie a instância do MEmu, feche qualquer outra ferramenta que rode o próprio servidor adb e clique em **Iniciar**. O MAS desconecta a entrada antiga e reconecta a cada início. Se continuar offline, reinicie o MAS para que o servidor adb dele inicie limpo.

### Gravador de macros do MEmu versus o MAS

Uma rotina gravada no MEmu não pode ser importada para o MAS, porque o MAS só roda macros Python. Recrie-a: capture os botões como templates no Asset Lab, clique neles com `find_object_retry` e faça o loop com uma condição de parada. O resultado sobrevive a pop-ups, carregamentos lentos e mudanças de layout que quebram uma sequência gravada, e roda em qualquer dispositivo que o MAS controle. Se uma macro do MAS travar, abra **Logs** no card do dispositivo: `ImageNotFoundError` e `TimeoutError` nomeiam o passo que falhou.

## Controle pelo Python

Com o card em **Em execução**, o `src/app.py` de uma macro controla a instância pelo pacote `mas`. A porta é escolhida pelo MAS, então os scripts nunca a referenciam.

```python
import mas

size = mas.get_screen_size()
mas.log(f"MEmu 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)
```

Leia a [visão geral do SDK](/docs/sdk) para todos os namespaces, e [Controlar um emulador Android pelo Python](/docs/guides/control-an-emulator-from-python) para um primeiro script completo.
