Android Emulator Terminal: The Complete Practical Guide
Android Emulator Terminal: The Complete Practical Guide
목차
- 안드로이드 에뮬레이터 터미널이 필요한 이유
- 명령 줄에서 에뮬레이터를 시작하는 방법
- adb Shell로 에뮬레이터를 제어하는 방법
- adb를 넘어서 에뮬레이터 콘솔을 사용하는 방법
- 터미널 앱과 루트 접근 Inside the Emulator
- 네트워킹, 포트 포워딩 및 키보드 단축키
- 2026년 터미널 워크플로우와 문제 해결
Android Emulator 터미널이 필요한 이유
GUI가 멈췄을 때 가장 명백한 경우입니다. 에뮬레이터 창이 여전히 열려 있지만, 그것을 믿을 수 없으며, 그것을 클릭할 수 없으며, 빌드 서버에 대한 워크플로우는 확대되지 않습니다. 터미널은 창이 처리할 수 없는 부분을 처리합니다. 반복 가능성. Google의 에뮬레이터 문서는 명령 줄 및 콘솔을 자동화 및 원격 제어의 도구로 설명하며, 런치 구문은 emulator -avd avd_name 또는 emulator @avd_nameAndroid Emulator 명령줄 참조 emulator -help 터미널 제어를 표준화하는 이유.
첫 번째로 중요해지는 순간은 보통 멋지지 않다. QA 스크립트는 깨끗한 장치 상태가 필요하고 개발자는 Linux와 macOS에서 AVD가 부팅되는 것을 필요로 하거나 CI 러너는 테스트 대상이 화면을 보지 않는 채로 시작해야 한다. 그 순간에 에뮬레이터는 데스크톱 앱처럼 행동하지 않고 인프라처럼 행동하기 시작한다.
실용적인 규칙:
반복해야 하는 작업, 로그를 남기거나 실패 후 복구해야 하는 작업은 모두 터미널 경로를 먼저 사용하라. Google도 에뮬레이터를 공식 명령줄 도구 세트에 함께 배치하고 있으며, 이는 중요하다. Android 자동화는 인터페이스 스택이기 때문이다. 단 하나의 인터페이스가 모든 것을 pretended하는 것이 아니다.
Android adb 및 에뮬레이터 도구 장치 검사 및 셸 접근을 위해 사용하고, 에뮬레이터 콘솔을 사용하여 라이프 사이클 제어 및 에뮬레이터 전용 명령을 사용하라. 그 역할을 섞는 것은 스크립트가 취약해지는 이유이다. Android Emulator 명령줄 옵션 Android Emulator 명령줄 옵션Android Emulator 명령줄 옵션 adb Android Emulator 명령줄 옵션
다른 오해를 버려야 할 것은 에뮬레이터 터미널이 GUI wrapper에 불과하다는 것이다. 아니다. 콘솔은 인증되며 localhost 포트에 바인딩되어 명령어를 지원한다. avd start, avd stop, avd status, ping그리고 rotate Android Emulator 콘솔 참조그것이 프로덕션급 제어 평면처럼 행동하는 이유가 바로 그것이다.
하이브리드 및 Capacitor 워크플로우의 경우, 설치 또는 디버깅하기 전에 동일한 discipline가 중요하다. Android setup for Capacitor apps Android __CAPGO_KEEP_0__ 앱 설정
디버깅 및 설치하기 전에 동일한 discipline가 중요하다.
Launching Emulators from the Command Line emulator -list-avds첫 번째 명령어는 이미 사용 가능한 것을 보여주는 것이다. emulator -avd <name> AVD를 선택한 후 emulator @<name>. If the path to the binary isn’t on your shell PATH, find it inside the Android SDK’s emulator directory on Windows, macOS, or Linux, then run it directly from there.

__CAPGO_KEEP_0__를 실행하는 데 사용하는 플래그
정상적인 실행과 디버깅 세션의 차이점은 깨끗한 시작입니다. 일상적인 작업에서 유용한 터미널 플래그는 CI 및 비주얼 호스트에서 부팅 동작을 예측할 수 있게 해주는 플래그입니다. -no-window __CAPGO_KEEP_0__ 경로 -no-snapshot __CAPGO_KEEP_1__ 플래그를 사용하여 깨끗한 상태를 강제합니다. -no-audio __CAPGO_KEEP_0__ 플래그를 사용하여 불필요한 노이즈를 제거합니다. -no-boot-anim __CAPGO_KEEP_1__ 플래그는 하드웨어 가속이 사용할 수 없는 경우 실용적인 대안입니다. -gpu swiftshader_indirect 이 combination은 '에뮬레이터가 시작되었습니다'와 '에뮬레이터가 시작되었습니다. pipeline이 신뢰할 수 있는 방식으로'의 차이점입니다. 시작 명령은 테스트 계약의 일부가 됩니다. 개발자에게 __CAPGO_KEEP_0__ 또는 하이브리드 앱 워크플로우를 사용할 때, 디버깅 또는 설치 단계가 시작되기 전에 동일한 시작 규칙이 적용됩니다. __CAPGO_KEEP_1__ 개발자들을 위한 실용적인 안드로이드 설정 가이드는 에뮬레이터 명령과 함께 보관할 가치가 있습니다.
That combination is the difference between “the emulator started” and “the emulator started in a way that a pipeline can trust.” The launch command becomes part of your test contract, not just a convenience wrapper. If you’re bringing up a device for a Capacitor or hybrid app workflow, the same launch discipline applies before any debugging or install step begins. A practical Android setup guide for Capacitor developers is __CAPGO_KEEP_0__를 사용하는 가장 흔한 실수는 기계가 가지고 있는 것을 확인하기 전에 가정치를 고정시키는 것입니다. 기기 목록을 먼저 확인하면 시간을 절약할 수 있습니다. 기기가 존재하고 셸이 기기를 볼 수 있는지 확인할 수 있습니다. 그런 다음 하나의 알려진 기기를 시작하고 부팅 경로를 관찰한 후에 플래그를 조정합니다..
__CAPGO_KEEP_1__ 개발자들을 위한 실용적인 안드로이드 설정 가이드는 에뮬레이터 명령과 함께 보관할 가치가 있습니다.
__CAPGO_KEEP_0__를 사용하는 가장 흔한 실수는 기계가 가지고 있는 것을 확인하기 전에 가정치를 고정시키는 것입니다.
유용한 습관: 로컬 작업과 CI를 위한 한 개의 정리된 런치 명령어를 유지하고, 더 엄격한 명령어를 CI에 사용하십시오. pipeline이 laptop의 모든 편리한 플래그를 상속하지 않도록 하십시오.
그 분리로 로컬 디버깅이 친화적이면서도 자동화가 느슨하지 않게 유지됩니다. 런치가 안정되면 나머지 터미널 워크플로우가 finally 신뢰할 수 있는 대상에 연결할 수 있습니다.
에뮬레이터를 adb Shell로 제어하는 방법
에뮬레이터가 켜지면 adb 가 가장 자주 사용하는 제어 표면이 됩니다. adb devices 어떤 것이 연결되어 있는지 adb -s emulator-5554 shell 를 보여주고,

를 사용하여, 여러 가상 장치가 있는 머신에서 일반적인 명령어를 잘못된 대상에 적용하는 것을 방지합니다. 시리얼 번호는 원하는 에뮬레이터를 사용하도록 자동화에 지시합니다.
Android 에뮬레이터 관리 및 개발을 위한 adb shell 명령어 흐름 프로세스의 3 단계 그래픽 설명입니다. 연결하고, 셸을 사용할 필요가 있는지 결정하십시오. adb shell 명령은 더 깨끗합니다. 앱 동작을 단계별로 추적하는 경우, interactive shell로 들어가서 작업이 끝날 때까지 그곳에 머물러 있습니다.
adb push 그리고 adb pull 파일 이동을 처리합니다. adb install -r 반복적인 로컬 테스트를 위해 실제적인 경로입니다. 스크린샷 캡처 경로도 신뢰할 수 있습니다. 스크린 녹화는 실패한 실행에서 빠른 아티팩트가 필요할 때도 직접적인 경로입니다. adb exec-out screencap 패키지 설치자 및 로컬 사이드 로딩 워크플로우에 대해, 이 설치 안내서는 유용한 동반자입니다. adb shell screenrecord ADB를 앱 작업에 사용하고, 에뮬레이터 라이프 사이클 작업에는 사용하지 마세요. Android 자체 내에서 실행되는 명령에 적합한 layer입니다. 공유 저장소에 스크립트가 저장되어 있다면,.
실제 자동화 스택에 잘 맞습니다. 또한,
adb debug build에서 유용합니다. 앱-사용자 전용 파일을 제공하기 때문에 루트 강제 없이도 사용할 수 있습니다. adb shell sh /sdcard/run.sh 한계는 명확합니다. run-as <package> __CAPGO_KEEP_0__
__CAPGO_KEEP_0__ adb __CAPGO_KEEP_0__
실제로 에뮬레이터 콘솔을 대체하지 않으며, 더 깊은 에뮬레이터 라이프 사이클 제어 또는 콘솔 전용 작업에 적합하지 않습니다. 파일 전송, 패키지 관리, 명령어 실행 및 빠른 탐색을 위해 사용하세요. 그 이상은 사용하지 마세요. 실용적인 규칙:
adb shell액션에 Android이 속하는지 여부를 확인하세요. Android에 속하는 액션은
에뮬레이터 자체에 속하는 액션은 콘솔을 사용하세요. 플러그인 층별로 작업하는 팀, 플랫폼 특정 동작 및 장치 상태에 대한 질문에 대한 더 광범위한 디버깅 도구가 터미널 작업이 추측으로 변하지 않도록 도와줍니다. 이 디버깅 리소스는
adb 워크플로우와 잘 어울립니다.
에뮬레이터 콘솔을 사용하는 방법 에뮬레이터 콘솔은 별도의 제어 평면이며, 이 차이점은 중요합니다. Google은localhost 포트 5554부터 5585 avd start, avd stop, avd status, ping에만 리스닝하며, 인증이 필요한 경우 명령어를 수락하고, 명령어와 같은 rotate 사용할 수 있게 되면 사용할 수 있습니다. 그게 에뮬레이터 수준의 액션을 수행할 수 있는 올바른 도구입니다. adb 청산할 수 없는 표현을 할 수 없는 액션입니다.

이용할 수 있는 정보를 전송하기 전에 인증하세요.
Google의 문서화된 경로는 telnet localhost console-port, 기다려 OK, 그리고 auth auth_token 에 저장된 토큰을 사용하여 ~/.emulator_console_auth_token이 토큰 파일이 존재하지 않으면, telnet 연결은 임의의 토큰으로 파일을 생성합니다. 임시 CI 환경에서, 그 의미는 파일을 의도적으로 보존하거나 파일을 의도적으로 초기화해야 합니다. 놀라운 인증 실패는 거의 항상 상태 관리 실패입니다.
콘솔도 발견할 수 있습니다. help, help command그리고 help-verbose , 그리고 adb 나중에 처리할 수 있습니다.
콘솔에 어떤 것이 속하는지 알 수 있나요?
라이프사이클과 에뮬레이터 측 상태에 대한 콘솔 명령은 콘솔 명령의 명백한 예입니다. avd start 그리고 avd stop 응답성 확인이나 장치 변경 시뮬레이션과 같은 경우에도 유용합니다. rotate 에뮬레이터는 이 맥락에서 인프라와 같이 작동합니다. ping 시작, 준비, 종료를 모두 한 곳에서 스크립트할 수 있기 때문입니다.
일반적인 오류는 에뮬레이터 콘솔과 안드로이드 셸을 혼동하는 것입니다. adb shell그들은 가까이서 보면 비슷해 보이지만 프로토콜은 다릅니다. 콘솔은 인증되고 포트 바인딩된 반면, 셸 접근은 일반적으로 이러한 경우 스크립트는 다른 타임아웃과 다른 실패 처리가 필요합니다.
플랫폼 특정 워크플로우에서 터미널 신뢰성을 보장하기 위해, __CAPGO_KEEP_0__
실행을 시작하지 마세요. 콘솔 핸드 셰이크가 성공하고 가상 장치가 예상한 상태를 보고할 때만 테스트를 시작하세요.
테스트 실패를 줄이기 위해, 그 문제를 해결하기 전에 테스트 스위트에 도달하지 못하는 "부팅되었지만 준비되지 않은" 테스트를 제거하세요.
터미널 앱과 루트 접근 권한
가상 머신 내에서 작업이 필요할 때, 호스트에서 작업하는 것보다 더 간단한 방법은 가상 머신 내에 실제 터미널 앱을 설치하는 것입니다. Termux는 표준 선택이며, 호스트에서 터미널 앱을 사용하는 것보다 더 가까운 Unix 워크플로를 제공하는 디바이스 내 셸 환경을 제공합니다.
루트 접근 권한은 이미지에 따라 결정됩니다. 시스템 이미지가 루트 접근을 허용하는 경우, adb root 루트 접근 권한이 허용되는 시스템 이미지가 아닌 경우, adb shell su 그리고
BusyBox is still useful in this layer because it fills in gaps in the command set you’d otherwise miss. If you’re doing file inspection, device-side scripting, or quick diagnostics inside the emulator, a fuller Unix toolkit makes the machine feel much less constrained. The related root checks for Capacitor projects are discussed in BusyBox는 여전히 유용합니다. BusyBox는 명령 집합의 결함을 채우기 때문에, 디바이스 내에서 파일 검사, 디바이스 측 스크립팅, 또는 빠른 진단을 수행할 때 더 완전한 Unix 도구킷을 사용하면 머신이 더 제약이 없는 느낌을 줍니다. 관련 루트 확인은 __CAPGO_KEEP_0__ 프로젝트에 대해.
이 플러그인 가이드에서 설명합니다.
루트 접근 권한이 필요하지 않은 경우, debug 빌드에서만 사용하세요. adb shell run-as <package> __CAPGO_KEEP_0__는 앱-사용자 디렉터리만 열어도 충분히 앱-사용자 디렉터리를 검사할 수 있습니다. 이는 더 넓은 폭을 가진 폭파 반경을 만들지 않도록 하는 더 깨끗한 습관입니다. 이는 작업 흐름이 가장 적은 권한의 도구와 일치하는 것을 유지하기 때문입니다.
시스템 쓰기를 필요로 하는 경우, 시스템 파티션은 쓰기 가능해야 하며, 이는 다른 클래스의 설정입니다. 일상적인 에뮬레이터 작업을 위해 호스트 측 adb shell 호스트 측이 더 좋은 시작점이며, 호스트 접근이 충분하지 않은 경우에만 장치 측 터미널을 특수화된 층으로 다루는 것이 좋습니다. 규칙은 간단합니다. 여전히 버그를 재현할 수 있는 가장 작은 권한을 사용하십시오.
네트워킹, 포트 포워딩 및 키보드 단축키
터미널-첫 번째 에뮬레이터 워크플로가 실제로 발생하는 순간은 호스트 경계를 넘어야 할 때입니다. adb reverse tcp:8080 tcp:8080 __CAPGO_KEEP_0__는 로컬 개발 서버를 실행 중인 기기에서 에뮬레이터를 지시하는 가장 깨끗한 방법입니다. 특히 앱이 호스트 서비스를 호출하기를 기대할 때입니다. adb forward __CAPGO_KEEP_0__는 에뮬레이터가 호스트 서비스에 접근할 수 있도록 합니다.
__CAPGO_KEEP_0__는 장치에서 트래픽을 호스트 포트로 보내므로, 연결 경로가 결정하는 것이 어떤 명령어를 적용해야 하는지 결정합니다.
연결성 여부가 여전히 이상해 보인다면, VM 내의 경로 테이블을 확인하십시오. adb reverse __CAPGO_KEEP_0__는 에뮬레이터가 호스트 서비스에 접근할 수 있도록 합니다. adb forward __CAPGO_KEEP_0__는 장치에서 트래픽을 호스트 포트로 보내므로, 연결 경로가 결정하는 것이 어떤 명령어를 적용해야 하는지 결정합니다.
__CAPGO_KEEP_0__는 에뮬레이터가 호스트 서비스에 접근할 수 있도록 합니다. adb shell ip route 그리고 인터페이스를 검사합니다. ifconfig. 네트워크 경로가 정상적으로 보이지만 서비스가 연결을 거부할 때, 일반적으로 오류는 호스트 리스너나 전달 설정에 있지 않습니다. 안드로이드 자체가 아니라. 로컬 트래픽 지연이 디버깅 중에 무엇을 볼 수 있는지 어떻게 형성하는지 보다 광범위한 관점을 취하려면 네트워크 지연 시간을 설명하는 이 문서
디버깅 중에 무엇을 볼 수 있는지 어떻게 형성하는지 보다 광범위한 관점을 취하려면 유용한 동반자 읽기입니다.
터미널의 이야기 중 키보드 제어는 구글의 키보드 매핑이 에뮬레이터를 데스크톱 목표로 훨씬 더 좋은 목표로 만듭니다. F2 메뉴를 열기 위해 ESC 뒤로가기 F7 Alt-Enter fullscreen 모드를 전환합니다. 카메라, 볼륨 및 방향 제어도 동일한 매핑을 사용하므로 장치 동작의 많은 부분이 키보드에 남아 있기 때문에 툴바에 묻혀 있지 않습니다.
노트북과 큰 모니터에서 중요합니다. 제어 표면이 키보드에 살아 있으면 에뮬레이터는 일일 작업 도구처럼 행동하기 시작하고 마우스로 계속해서 창을 밀어내지 않습니다.
| deprecated 플래그 | 이미 사용하지 않는 기능 | 최신 버전의 대체 |
|---|---|---|
-audio-in |
음성 입력 제어를 활성화 | 현재 문서에서 작동하지 않으므로 런치 스크립트에서 제거하십시오 |
-audio-out |
음성 출력 제어를 활성화 | 현재 문서에서 작동하지 않으므로 런치 스크립트에서 제거하십시오 |
-enable-kvm |
가상화 경로를 요청 | 현재 문서에서 작동하지 않으므로 런치 스크립트에서 제거하십시오 |
-gps |
GPS 동작을 제어합니다. | 현재 문서에서 작동하지 않기 때문에 런치 스크립트에서 제거하십시오. |
-skin |
장치 스킨을 설정합니다. | 현재 문서에서 작동하지 않기 때문에 런치 스크립트에서 제거하십시오. |
-skindir |
스킨 디렉토리 하나를 가리킵니다. | 현재 문서에서 작동하지 않기 때문에 런치 스크립트에서 제거하십시오. |
-useaudio |
오디오 사용을 활성화합니다. | 현재 문서에서 작동하지 않기 때문에 런치 스크립트에서 제거하십시오. |
구글은 현재 에뮬레이터 문서에서 이 플래그를 더 이상 작동하지 않는 것으로 나열하고 있으므로, 새로운 스크립트로 복사될 때 빠르게 오래된 Snippet이 썩을 수 있습니다. 현재 에뮬레이터 명령줄 노트아직도 공유된 쉘 스크립트에 남아 있다면, 런치 스크립트에서 제거하고 다시 테스트하십시오.
문제 해결 및 2026 터미널 워크플로우
검색 화면, offline, unauthorized, KO: missing auth, 포트 충돌 및陈舊快照은 일반적인 실패 클러스터입니다. 문제의 원인을 식별하면 해결책은 직관적입니다. 부팅이 지연되는 경우 일반적으로快照 상태를 나타내며, 콘솔 인증 실패는 일반적으로 토큰 파일 또는 핸드셰이크가 동기화되지 않은 경우입니다.

실패가 가장 많은 시간을 소모하는 것에 대한 일 줄된 해결책
에뮬레이터가 검은 화면으로 멈추지 않으면, 새로고침 경로를 비우고陈舊 상태를 삭제하세요. 만약 adb 라고 offline 또는 unauthorized디바이스를 다시 연결하고 호스트와 에뮬레이터 인스턴스가 여전히 일치하는지 확인하세요. 콘솔이 KO: missing auth를 반환하면, 토큰 파일 및 핸드셰이크 경로를 먼저 확인하세요. 콘솔은 그 단계가 정확할 때까지 명령을 수락하지 않습니다.
포트 충돌은 일반적으로 이전 에뮬레이터가 정상적으로 종료되지 않은 경우에 나타납니다. 따라서 다음 실행 전에 사용 중인 포트를 해제해야 합니다. 부팅이 완료되지 않으면,快照 드리프트를 가정하고 증명되지 않은 경우까지 결정론적 시작을 강제하세요. 이 습관이 2026년의 터미널 워크플로우가 신뢰할 수 있는 이유입니다.
워크플로우를 시스템으로 다루세요, 클릭의 시퀀스만 다루지 마세요
강력한 패턴은 예측 가능한 부팅, 인증된 콘솔 접근입니다. adb shell 앱 수준 작업을 위해, 그리고 상태가 이탈할 때 롤백 경로가 필요합니다. 그것은 빠른 모바일 반복의 discipline입니다. native 앱을 테스트하든지, Capacitor 앱에 대한 제어된 릴리스 PIPELINE을 통해 업데이트를 배포하든지 상관없이.
신뢰는 이익입니다. 에뮬레이터 터미널이 제어 평면으로 연결되면, 창이 반응적이라는 것을 물어보지 않고, 테스트가 기대하는 정확한 장치 상태가 있는지 물어보게 됩니다.
Capgo를 사용하여, 스토어 리뷰를 기다리지 않고 JavaScript, CSS, config, 및 asset 수정을 포함한 빠른 모바일 앱을 빌드하는 팀에게, 신뢰할 수 있는 릴리스 및 복구 경로와 에뮬레이터로 테스트를 동시에 사용할 수 있습니다. Visit Capgo 를 통해, 라이브 업데이트, 롤백 보호, 및 릴리스 제어가 터미널로 주어지는 안드로이드 테스트에 어떻게 들어가는지 확인하세요.