기기
MEmu ADB 연결과 포트 설정: 미뮤 앱플레이어를 MAS에 추가
MEmu Play를 21503 포트로 Macro Automation Studio에 ADB 연결하고 기기로 추가하며, offline 오류를 고치고 녹화기 대신 MAS 매크로를 실행합니다.
- Windows
- 에뮬레이터
- 스튜디오
- Python SDK
이 페이지의 내용
이 가이드는 MEmu ADB 연결 방법, 즉 MEmu Play(미뮤 앱플레이어)를 Macro Automation Studio(MAS)에 ADB로 연결하는 과정과, MAS 매크로가 MEmu 매크로 녹화기와 어떻게 다른지 설명합니다. MEmu ADB 연결은 Windows 전용입니다. MEmu가 Windows용으로만 제공되기 때문입니다.
시작하기 전에
- Windows 10 또는 11에 MAS가 설치되어 있고 로그인한 상태. 체험용 MAS는 다운로드 페이지에서 무료로 받을 수 있습니다.
- memuplay.com에서 MEmu를 설치하고 한 번 실행한 상태.
- 인스턴스가 Android 홈 화면까지 완전히 부팅된 상태.
- 안정적인 인스턴스를 위해 BIOS에서 가상화를 켠 상태.
1. MEmu 설치
- 공식 사이트에서 MEmu를 받아 설치 프로그램을 실행합니다.
- MEmu를 시작하고 홈 화면을 기다립니다.
- MAS에 기기를 추가하기 전에 자동화할 앱에 로그인합니다.
2. 고정 해상도 설정
MAS는 템플릿 이미지를 픽셀 단위로 비교합니다. MEmu 설정을 열고 고정 해상도를 고른 뒤 유지하세요. MAS 기준선에 맞춰 작성된 매크로는 세로 540x960, 240 DPI를 기대합니다. 직접 쓴 매크로는 Asset Lab에서 캡처한 해상도를 기대합니다. MEmu가 요청하면 인스턴스를 다시 시작합니다.
3. MEmu에서 ADB 켜기
공식 MEmu 문서에는 ADB 토글이 없습니다. 실행 중인 인스턴스는 Android의 adb 포트를 호스트의 127.0.0.1:21503으로 포워딩하며, 이 주소는 MEmu 자체 명령줄 안내에서도 사용됩니다. 사용하는 MEmu 빌드의 Settings에 ADB 또는 개발자 옵션이 있으면 켜 두세요. 계속하기 전에 인스턴스를 시작하고 홈 화면을 기다리세요.
4. MEmu ADB 포트와 MAS의 스캔 방식
MEmu의 기본 인스턴스는 21503에서 수신합니다. MAS는 에뮬레이터를 찾기 위해 adb devices를 쓰지 않습니다. 실행 중인 프로세스를 스캔해 다음 규칙에 맞는 포트만 남깁니다:
- 프로세스 이름에
memuheadless또는memuhyper가 들어 있습니다. - 포트가 21503 이상이고, 3으로 끝나며, 30000 미만입니다. 따라서 21513, 21523 같은 포트도 맞습니다.
- 소켓이
127.0.0.1에서 수신합니다.
조건에 맞는 포트는 Add Device 대화 상자에 MEmu 레이블로 나타납니다. 예를 들어 21503 - MEmu입니다. 스캔은 기기 그룹을 열 때와 Refresh를 클릭할 때마다 실행됩니다.
5. MAS에서 MEmu Play ADB 연결
- 사이드바에서 Device Groups를 열고 그룹을 열거나 새로 만듭니다.
- Add Device를 클릭합니다.
- 최대 50자의 Device Name을 입력합니다.
- Port에서 이 인스턴스의
MEmu항목을 고릅니다. 목록이 비어 있으면 Refresh를 클릭합니다. - MEmu가 위 규칙에 맞지 않는 포트를 쓰면 Custom Port를 선택하고 입력합니다. MAS는 1024부터 65535까지 받습니다.
- 필요하면 Startup Macro를 고릅니다.
- Add Device를 클릭한 뒤 기기 카드에서 Start를 클릭합니다.
카드가 Connecting을 거쳐 Running으로 바뀝니다. MAS는 adb 서버를 시작하고, 127.0.0.1:<port>의 오래된 항목을 제거한 뒤, 그 주소로 adb connect를 실행합니다.
MEmu의 매크로
MEmu 매크로 녹화기는 고정 좌표의 탭과 스와이프를 캡처해 재생하며, 반복 옵션도 있습니다. 화면을 보지 않으므로 느린 로딩, 팝업, 위치가 바뀐 버튼이 순서를 깨뜨리고, 루틴은 MEmu 안에서만 동작합니다.
MAS 매크로는 행동하기 전에 화면을 확인하는 파이썬 스크립트입니다. 템플릿 매칭으로 버튼을 찾고, OCR로 텍스트를 읽고, 재시도로 기다리고, 본 것에 따라 분기합니다. MAS가 adb로 기기를 조작하므로 같은 스크립트가 MEmu, 다른 에뮬레이터, 클라우드 기기에서 수정 없이 실행됩니다.
- 녹화한 루틴을 화면 인식 매크로로 다시 만들려면 이미지 인식 매크로를 따라 하세요.
- 조건이 충족될 때까지 반복하거나 예약 실행하려면 반복, 정지 조건, 예약 실행을 읽어 보세요.
- Marketplace 매크로는 MAS 매크로로 설치되어 지정한 기기에서 실행됩니다.
여러 MEmu 인스턴스
MEmu 다중 인스턴스 관리자의 인스턴스는 각각 자기 포트로 수신합니다. 같은 기기 그룹에 각각 별도 기기로 추가하고, 기기별로 매크로와 설정 프로필을 지정한 뒤, 그룹의 Start All과 Stop All을 사용하세요. 기기별 인수와 프록시는 기기 그룹을 참고하세요.
문제 해결
MEmu ADB 연결
기기 카드에 Error 또는 “Failed to start device”가 표시되거나, MAS에 MEmu 항목이 없습니다. 다음 원인을 차례로 확인하세요:
- 인스턴스가 아직 부팅 중입니다. 홈 화면을 기다린 뒤 Refresh를 클릭하고 다시 시작하세요.
- 포트가 스캔 규칙에 맞지 않아 MAS가 건너뛰었습니다. MEmu가 쓰는 번호로 Custom Port를 사용하세요.
- 포트가 다른 인스턴스의 것입니다. 카드의 Edit Device로 고치세요.
- 스캔이 “Failed to scan emulator ports”를 표시했습니다. MAS를 다시 시작하고 대화 상자를 다시 여세요.
- 기기 로그에 adb가 “connection refused” 또는 “cannot connect”를 출력했습니다. 그 포트에서 수신하는 것이 없습니다. 인스턴스를 다시 시작하고 번호를 다시 확인하세요.
MEmu ADB 기기 offline
인스턴스 안의 adb 데몬이 응답을 멈추면 adb가 기기를 offline으로 표시하며, 보통 절전, 업데이트, 또는 같은 컴퓨터의 두 번째 adb 서버 뒤에 일어납니다. 카드에서 Stop을 클릭하고, MEmu 인스턴스를 다시 시작하고, 자체 adb 서버를 실행하는 다른 도구를 닫은 뒤 Start를 클릭하세요. MAS는 시작할 때마다 오래된 항목을 끊고 다시 연결합니다. 계속 offline이면 MAS를 다시 시작해 adb 서버를 깨끗하게 시작하세요.
MEmu 매크로 녹화기와 MAS의 차이
MEmu에서 녹화한 루틴은 MAS로 가져올 수 없습니다. MAS는 파이썬 매크로만 실행하기 때문입니다. 다시 만드세요: Asset Lab에서 버튼을 템플릿으로 캡처하고, find_object_retry로 클릭하고, 정지 조건과 함께 반복합니다. 결과물은 녹화 순서를 깨뜨리는 팝업, 느린 로딩, 레이아웃 변경을 견디며, MAS가 조작하는 모든 기기에서 실행됩니다. MAS 매크로가 멈추면 기기 카드의 Logs를 여세요. ImageNotFoundError와 TimeoutError가 실패한 단계를 알려 줍니다.
파이썬으로 제어
카드가 Running이면 매크로의 src/app.py가 mas 패키지로 인스턴스를 조작합니다. 포트는 MAS가 고르므로 스크립트에서 참조할 일이 없습니다.
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)모든 네임스페이스는 SDK 개요에서, 완전한 첫 스크립트는 파이썬으로 안드로이드 에뮬레이터 제어하기에서 읽어 보세요.
다음 단계
관련 페이지
감사합니다. 잘못된 내용이 있으면 Discord에서 알려 주세요.
궁금한 점이 있으신가요? Discord에서 질문하기