검색

기기

클라우드 안드로이드 에뮬레이터: 클라우드 기기 생성과 매크로 실행

Macro Automation Studio에서 클라우드 안드로이드 기기를 만들고 WebRTC로 화면을 보며, APK를 설치하고 PC를 꺼도 서버에서 매크로를 실행하며, 멈춘 기기를 고칩니다.

  • Windows
  • Mac
  • 클라우드 기기
  • 스튜디오
  • API
  • MCP
초급 업데이트 11분 소요
이 페이지의 내용
  1. 시작하기 전에
  2. 클라우드 안드로이드 기기란
  3. 클라우드 기기 만들기
  4. 클라우드 안드로이드 폰의 Google Play
  5. 기기 상태
  6. 시작, 정지, 삭제
  7. 실시간 화면 보기
  8. 앱 설치
  9. 클라우드 기기에서 매크로 24시간 실행
  10. 클라우드 기기 그룹과 프록시
  11. REST API와 MCP
  12. 비용
  13. 문제 해결
  14. 기기가 placing 또는 starting에서 멈춤
  15. 스트림이 연결되지 않음
  16. 앱 설치 실패

클라우드 기기는 Macro Automation Studio(MAS)가 자체 GPU 호스트에서 대신 실행해 주는 클라우드 안드로이드 에뮬레이터입니다. 앱에서 로컬 에뮬레이터 옆에 나란히 표시되고, 화면을 WebRTC로 스트리밍하며, 매크로를 서버에서 실행하므로 컴퓨터를 꺼도 됩니다. 이 페이지는 클라우드 안드로이드 에뮬레이터를 만드는 방법, 상태, 앱, 실행, 제한을 다룹니다.

시작하기 전에

  • MAS가 설치되어 있고 로그인한 상태. MAS 설치를 참고하세요.
  • 요금제에 클라우드 기기가 하나 이상 포함되어 있어야 합니다. 클라우드 기기는 유료 요금제의 추가 옵션입니다. 결제를 참고하세요.
  • 실행하려면: 라이브러리에 파이썬 매크로. 실행 대화 상자에는 파이썬 매크로만 나열됩니다.

클라우드 안드로이드 기기란

각 클라우드 기기는 MAS 데이터 센터의 완전한 Android 기기이며 서버 GPU에서 렌더링됩니다. 시작과 정지에는 실제 시간이 걸립니다: 새 부팅 약 48초, 재개 17초, 정지 9초. 화면은 영상과 탭을 함께 나르는 WebRTC 스트림으로 전달되며, 한 번에 한 뷰어만 잡을 수 있습니다. 다른 곳에서 열려 있으면 카드에 눈 아이콘과 Being viewed live가 표시됩니다. 매크로는 기기 옆 MAS 서버에서 실행되므로 앱을 닫아도 실행이 끝나지 않습니다. 설치된 앱과 로그인된 계정은 정지 후에도 유지되며, Delete만 지웁니다.

클라우드 기기 만들기

  1. 사이드바에서 Cloud Devices를 엽니다.
  2. Device name을 입력합니다.
  3. Android 버전을 고릅니다. 목록은 서버에서 오며 Android 15가 기본값입니다.
  4. Resolution을 고릅니다: Light(540 x 960), Standard(720 x 1280) 또는 Sharp(1080 x 1920). Sharp는 픽셀이 약 두 배라 대역폭이 더 필요합니다.
  5. DPI를 고르거나 프리셋 자체 밀도인 Default를 유지합니다. 허용 값은 160, 240, 320, 480입니다.
  6. 필요하면 Include Google Play Store를 체크합니다(아래 참고).
  7. Create를 클릭합니다.

기기가 Stopped로 나타납니다. 만드는 것만으로 시작되지는 않습니다. 버전, 해상도, DPI는 만든 뒤 고정되므로 다른 프로필이 필요하면 새 기기를 만들어야 합니다. 페이지 헤더가 요금제 대비 RunningAllocated 기기 수를 세며, 계정당 클라우드 기기를 최대 20대까지 둘 수 있습니다.

클라우드 안드로이드 폰의 Google Play

Google 앱은 기기별 선택 사항입니다. 기기를 만들 때 Include Google Play Store를 체크하거나, 기존 기기에서 Add Google Play를 클릭하세요. 기기가 약 15초 동안 한 번 재시작하며 데이터는 유지됩니다. Add Google Play to all은 아직 없는 모든 기기에 적용합니다.

처음에는 MAS가 Install Google apps 고지를 표시하며, 계정당 한 번 동의합니다. 요약하면: 기기는 LineageOS 개발자들이 관리하는 독립 오픈소스 패키지인 MindTheGapps를 설치하며, 여기에 Google Play Store, Google Play Services, Google Services Framework가 들어 있습니다. MAS는 Google과 제휴하거나 Google의 보증 또는 라이선스를 받지 않았습니다. MAS와 MindTheGapps 프로젝트 모두 Google 애플리케이션에 대한 어떤 라이선스도 부여하지 않으며, Google 앱과 Google 계정 사용에는 Google 자체 서비스 약관이 적용됩니다. 가상 기기는 Play Protect 인증을 받지 않았으므로 기기 무결성을 확인하는 앱은 동작하지 않습니다: 은행과 결제 앱, Google Wallet, HD 또는 DRM 스트리밍, 일부 게임. Google 앱의 설치와 사용은 본인 책임입니다.

Google Play가 있는 기기에는 Play 배지가 표시됩니다. 설치가 실패하면 카드에 Retry가 나타납니다.

기기 상태

상태의미
Stopped할당되었으나 실행 중이 아니며 데이터 유지. 실행 중으로 세지 않습니다.
PlacingMAS가 여유 있는 호스트를 찾거나 새 호스트를 준비 중(약 15분).
StartingAndroid 부팅 중: 보통 첫 부팅은 1:30 미만, 재개는 0:20 미만.
Ready실행 중. 화면을 보고, 앱을 설치하고, 매크로를 실행할 수 있습니다.
Stopping종료 중. 보통 0:10 미만.
Error무언가 실패했습니다. 카드에 이유가 표시되며 Start가 재시도합니다.

모든 전환은 비동기이며, 기기가 전환 중일 때 카드에 경과 시간이 표시됩니다.

시작, 정지, 삭제

  • Start가 기기를 부팅합니다. 요금제의 실행 슬롯이 모두 사용 중이면 “2 of 2 running, stop one to start another” 같은 메시지로 실패합니다.
  • Stop은 디스크를 유지한 채 실행 슬롯과 호스트의 GPU, RAM을 해제합니다. Start가 재개합니다.
  • Delete는 기기와 그 안의 모든 것을 파괴합니다: 설치된 앱, 로그인된 계정, 게임 진행 상황. 대화 상자가 먼저 알려 줍니다.

활성 실행이 없는 실행 중 기기는 60분 후 자동으로 정지됩니다. 데이터는 유지되며 Start가 몇 초 만에 재개합니다. 실행 중인 매크로는 기기를 켜진 상태로 유지합니다.

실시간 화면 보기

준비된 기기에서 View를 클릭합니다. Negotiating stream은 WebRTC 연결을 설정하는 중이라는 뜻입니다. 연결되면 클릭, 드래그, 키 입력이 기기로 바로 전달되고, 헤더에 Full screen, Back, Home, Close가 있습니다. 뷰어를 닫으면 다른 창이 스트림을 잡을 수 있습니다. Device Groups에서 클라우드 기기 카드에는 같은 뷰어를 카드 옆에 붙이는 Watch live가 있습니다.

앱 설치

준비된 기기에서 Install APK를 클릭합니다. 선택기에 세 가지 경로가 있습니다:

  • Upload a file (.apk / .xapk): 최대 1 GiB의 .apk, .xapk, .apkm 또는 .apks 파일. MAS가 확인하고 기기 호스트에 올려 거기서 설치합니다. 컨테이너 형식은 풀고, 32비트와 x86 스플릿은 버리고, 확장 파일은 제자리에 두고, 나머지를 하나의 번들로 설치합니다. arm64 빌드가 없는 패키지는 업로드 전에 거부됩니다. 클라우드 기기는 64비트 ARM 전용입니다.
  • Search for apps to download: 앱 이름을 입력하거나 링크 또는 패키지 ID를 붙여 넣고 Install을 클릭합니다. MAS가 이 컴퓨터에서 앱을 내려받아 같은 방식으로 설치합니다.
  • Manage installed apps: 기기에 무엇이 있는지 보고, 카탈로그에 새 빌드가 있으면 Update하고, 휴지통 버튼으로 제거합니다(확인을 위해 두 번 클릭). 헤더에 기기 제한 대비 사용 중인 앱 슬롯이 표시됩니다.

진행 상황은 카드에 표시됩니다: Checking app, Uploading app, Installing app. 실패 시 adb의 INSTALL_FAILED 코드를 포함한 원문 이유가 표시됩니다.

클라우드 기기에서 매크로 24시간 실행

  1. 기기를 시작하고 Ready를 기다립니다.
  2. 카드에서 Run을 클릭하고 파이썬 매크로를 고릅니다.
  3. 실행 줄을 확인합니다: 시작 중, 경과 시간과 함께 실행 중, 완료 또는 실패. Stop run은 실행을 끝내고 기기는 켜 둡니다.

실행이 시작되기 전에 MAS가 코드를 동기화합니다: 매크로의 프로젝트 폴더를 해시하고 트리가 바뀌었을 때만 스냅샷을 올립니다. 스냅샷은 최대 500개 파일, 압축 10 MiB이며, .git.venv 같은 점 폴더와 __pycache__, node_modules, venv, .pyc 파일은 건너뜁니다. 제한을 넘는 프로젝트는 실행 전에 이유와 함께 실패합니다. 예를 들어 “project has more than 500 files”입니다. 클라우드가 실행하는 것은 스냅샷이므로 커밋이나 푸시 없이 Code Editor의 작업 트리가 실행됩니다. Git 프로젝트와 코드 동기화를 참고하세요.

클라우드 기기 그룹에서 시작한 실행은 기기의 매크로와 인수 또는 설정 프로필을 사용하고, 스크립트 출력을 카드에 표시합니다. 모든 실행은 상태와 함께 Runs에 남습니다.

클라우드 기기 그룹과 프록시

기기 그룹은 한 종류의 기기만 담습니다. TypeCloud로 설정해 그룹을 만들고 Add cloud device를 클릭해 할당된 기기를 고르세요. 클라우드 기기는 클라우드 그룹에만 들어갈 수 있습니다. 그룹의 각 기기는 자체 매크로, 인수 또는 설정 프로필, 프록시, 웹훅을 가지며, Start All이 기기마다 서버 실행을 차례로 시작합니다. 기기 그룹을 참고하세요.

클라우드 기기에 연결된 프록시는 기기가 다음에 시작할 때 기기 네트워크 안에 적용되어 모든 트래픽이 프록시를 통해 나가며, 카드에 출구 IP가 표시됩니다. 프록시를 참고하세요.

REST API와 MCP

API 키로 서버 실행을 시작하고 관찰할 수 있습니다: macro_id와 선택적 args를 넣은 POST /api/hosted/devices/{id}/run, POST /api/hosted/runs/{id}/stop, GET /api/hosted/runs/{id}, 그리고 코드 동기화용 GET /api/macros/{id}/code-statePOST /api/macros/{id}/code-snapshot. 기기 수명 주기, 스트리밍, 앱 설치에는 앱 자체 로그인이 필요합니다. REST API를 참고하세요. MAS MCP 서버는 클라우드 기기를 MCP 클라이언트에 노출합니다.

비용

클라우드 기기는 모든 유료 요금제의 추가 옵션이며, 기기당 월 단위로 책정되고 MAS Agent용 월간 AI 크레딧이 포함됩니다. 결제 주기 중간에 기기를 추가하거나 제거할 수 있으며, 변경분은 일할 계산되고 갱신일은 그대로입니다. 가격 페이지결제를 참고하세요.

문제 해결

기기가 placing 또는 starting에서 멈춤

Placing은 아직 여유 있는 호스트가 없다는 뜻입니다. MAS가 새 호스트를 준비하며 약 15분이 걸리고, 기기는 저절로 다음 단계로 넘어갑니다. 45분 안에 아무것도 비지 않으면 기기가 “no capacity became available”과 함께 Error로 가며 Start가 재시도합니다. 첫 부팅은 보통 1:30 미만, 재개는 0:20 미만에 끝납니다. 경과 시간이 이를 한참 넘으면 Stop을 클릭하고 Stopped를 기다린 뒤 다시 Start하세요. 이렇게 하면 기기가 최신 호스트로 옮겨져 “this device’s host does not support APK installs yet”도 해결됩니다.

스트림이 연결되지 않음

  • 기기가 Ready여야 합니다. 정지된 기기는 “The device must be running before you can view it”으로 응답합니다.
  • Negotiating stream에서 멈춤: 스트림 티켓의 수명이 짧으므로 뷰어를 닫고 View를 다시 클릭하거나, 제시되면 Reconnect를 클릭하세요.
  • 다른 곳에서 열림: 한 뷰어만 스트림을 잡습니다. 다른 창이나 MAS 인스턴스에서 닫으세요.
  • WebRTC를 막는 네트워크에서는 영상이 나오지 않습니다. 다른 네트워크를 시도한 뒤 Discord에서 물어보세요.

앱 설치 실패

  • “this package has no arm64-v8a build”: 앱이 32비트 또는 x86 코드만 제공합니다. arm64 버전을 구하세요.
  • “not a valid APK”: 파일이 Android 패키지가 아니거나 손상되었습니다.
  • “the limit is 1024MB”: 패키지가 1 GiB를 넘습니다.
  • “INSTALL_FAILED_MISSING_SPLIT”: 번들이 불완전합니다. 전체 XAPK를 받아 설치하세요.
  • “install timed out”: 호스트에 부하가 걸려 있습니다. 몇 분 뒤 다시 시도하세요.

다음 단계

관련 페이지

이 페이지가 도움이 되었나요?

궁금한 점이 있으신가요? Discord에서 질문하기