본문으로 건너뛰기

안드로이드 에뮬레이터 터미널: 완전한 실용 가이드

2026년 안드로이드 에뮬레이터 터미널을 마스터하세요. adb shell, 콘솔 명령, 포트 포워딩, 윈도우, macOS, Linux에 대한 문제 해결 팁

안드로이드 에뮬레이터 터미널: 완벽한 실용 가이드

터미널이 GUI 제어를 도와주지 않으면서 앱이 검은 화면에 고정되어 있는 경우, 또는 CI 작업이 화면이 없고 단지 터미널 명령과 가상 장치만 남아 있는 경우, 그 때는 안드로이드 에뮬레이터 터미널이 편리한 도구에서 제어 평면으로 변합니다.

터미널이 단순히 동일한 버튼을 클릭하는 다른 방법이 아닌, 독립된 계층으로 구분된 런치, 셸 작업, 콘솔 제어를 제공하는 구글의 에뮬레이터 도구가 있습니다. 각 계층은 다른 문제를 해결합니다. 계층을 하나로 취급하면 스크립트가 불안정해지며, 이전 플래그가 워크플로우에 남아있고, CI가 랜덤하게 깨지지 않습니다.

목차

Android 에뮬레이터 터미널이 필요한 이유

GUI가 멈춘 경우가 명백합니다. 에뮬레이터 창이 여전히 열려 있지만, 그에 대한 신뢰를 할 수 없으며, 클릭을 통해 진행할 수 없으며, 이 워크플로가 빌드 서버에 확장되지 않습니다. 터미널은 창이 처리할 수 없는 부분을 처리합니다. Google의 에뮬레이터 문서는 명령줄과 콘솔을 자동화 및 원격 제어 도구로 설명하며, 다음과 같은 런치 구문이 있습니다. emulator -avd avd_name 또는 emulator @avd_name, 그리고 사용 가능한 전체 옵션 목록 emulator -help 그리고 전체 옵션 목록이 다음을 통해 사용할 수 있습니다..

Android 에뮬레이터 명령줄 참조

팀이 터미널 제어를 표준화하는 이유

첫 번째로 이게 중요해지는 경우는 일반적으로 비장난스럽습니다. QA 스크립트가 깨끗한 장치 상태를 필요로 하거나, 개발자가 같은 AVD를 Linux와 macOS에서 부팅시키거나, CI 러너가 테스트 목표를 열어두지 않고 테스트 목표를 가져올 때입니다. 그 때 에뮬레이터는 데스크톱 앱처럼 행동하지 않고, 인프라처럼 행동합니다. 실용적인 규칙:

만약 작업이 반복되거나 로그되거나 실패한 후 복구되야 한다면, 터미널 경로를 먼저 사용하십시오. adb adb 안드로이드 adb 및 에뮬레이터 도구. 사용 adb 장치 검사 및 셸 접근을 위해 사용하고, 에뮬레이터 콘솔을 사용하여 라이프 사이클 제어 및 에뮬레이터 전용 명령어를 위해 사용하세요. 두 역할을 혼합하는 것은 스크립트가 취약해지는 이유입니다.

다른 오해를 버리려면 에뮬레이터 터미널이 GUI wrapper일 뿐이라고 생각하는 것입니다. 아니다. 콘솔은 인증되며 localhost 포트에 바인딩되어 명령어를 지원합니다. avd start, avd stop, avd status, ping, rotate 안드로이드 에뮬레이터 콘솔 참조. 따라서 프로덕션급 제어 평면처럼 동작하며, 초보자용 샌드박스처럼 동작하지 않습니다.

하이브리드 및 Capacitor 워크플로우의 경우, 설치 또는 디버깅을 시작하기 전에 동일한 discipline가 중요합니다. 설치 및 디버깅을 시작하기 전에 안드로이드 Capacitor 앱 설정 을 참조하세요.

명령줄에서 에뮬레이터를 시작하는 방법

첫 번째 명령어는 이미 사용 가능한 것을 보여주는 것입니다. emulator -list-avdsAVD를 선택한 후 실행하세요. emulator -avd <name> 또는 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.

Android CLI의 이진 파일 경로가 셸 경로에 포함되지 않은 경우, Windows, macOS, 또는 Linux에서 Android CLI의 이진 파일을 찾고 직접 실행하세요.

개발자가 __CAPGO_KEEP_0__ 명령어를 입력하는 컴퓨터 화면.

launch flags -no-window 정상적인 실행과 디버깅 세션의 차이점은 깨끗한 시작입니다. 일상적인 작업에서 유용한 터미널 플래그는 CI 및 비주얼 호스트의 부팅 동작을 예측할 수 있는 플래그입니다. -no-snapshot headless 경로입니다. -no-audio and -no-boot-anim 그리고 -gpu swiftshader_indirect 필요하지 않은 잡음들을 제거하고

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 Android 에뮬레이터 터미널에서 사용할 수 있는 명령어.

디바이스 목록에서 시작하세요. 메모리에서 시작하지 마세요.

가장 흔히 하는 실수는 기계가 가지고 있는 것을 확인하기 전에 가정치를 강제로 적용하는 것입니다. AVD 목록을 먼저 표시하면 시간을 절약할 수 있습니다. 기대하는 이미지가 존재하고 셸이 해당 이미지를 볼 수 있는지 알려줍니다. 그런 다음 하나의 알려진 디바이스를 시작하고 부팅 경로를 관찰한 후에만 플래그를 조정합니다.

유용한 습관: 로컬 작업을 위해 하나의 정리된 런치 명령어를 유지하고 CI를 위해 더 엄격한 명령어를 유지하세요._PIPELINE_은 로컬 컴퓨터의 모든 편리한 플래그를 상속하지 마세요.

로컬 디버깅이 친화적이고 자동화가 느슨하지 않도록 유지하는 것이 중요합니다. 런치가 안정화되면 나머지 터미널 워크플로우가 신뢰할 수 있는 대상으로 연결할 수 있습니다.

에뮬레이터를 드라이브하는 adb 셸

에뮬레이터가 시작되면 adb 가 가장 자주 사용하는 제어 표면이 됩니다. adb devices 어떤 것이 연결되어 있는지 보여주고 adb -s emulator-5554 shell 특정 인스턴스와 특정 포트를 대상으로 하도록 허용합니다. 여러 가상 디바이스가 있는 머신에서 중요합니다. 일반적인 명령어는 잘못된 대상에 적용될 수 있습니다. 시리얼 번호는 디버깅을 위해 사용하는 에뮬레이터를 지정합니다.

Android 에뮬레이터 터미널 관리 및 개발을 위한 adb shell 명령어 흐름 프로세스 3단계 그래픽 설명서

연결 후 셸이 필요할지 결정하세요

단일 명령어와 인터랙티브 셸의 구분은 처음에는 중요하지 않게 보일 수 있지만, 실제로는 더 큰 차이점입니다. 설정을 검사하거나 파일을 수집할 필요가만 있다면 단일 명령어를 사용하는 것이 더 깔끔합니다. 그러나 앱 동작을 단계별로 추적해야 한다면 인터랙티브 셸로 들어가서 작업이 끝날 때까지 그곳에 머물러 있습니다. adb shell 그리고

adb push and adb pull 반복적인 로컬 테스트를 위한 실제 경로입니다. 또한 신뢰할 수 있는 스크린샷 캡처 경로를 제공합니다. 실패한 실행에서 빠른 아티팩트를 얻을 때 스크린 레코딩도 동일하게 직접적인 경로를 제공합니다. adb install -r 패키지 설치자 및 로컬 사이드 로딩 워크플로우에서 이 설치 가이드는 유용한 동반자입니다. adb exec-out screencap 앱 작업을 위해 adb를 사용하고, 에뮬레이터 라이프 사이클 작업을 위해 사용하지 마세요 adb shell screenrecord Android 내부에서 실행되는 명령어에 대한 올바른 계층입니다. 공유 저장소에 저장된 스크립트가 있다면 __CAPGO_KEEP_0__.

__CAPGO_KEEP_0__

adb __CAPGO_KEEP_0__ adb shell sh /sdcard/run.sh 실제 자동화 스택과 잘 맞습니다. 또한 루트 강제 없이 앱 전용 파일을 제공하는 데 사용할 수 있습니다. run-as <package> 디버그 빌드에서 유용해집니다. 루트 강제 없이 앱 전용 파일을 제공합니다.

한계는 간단합니다. adb 이미지 뷰어 콘솔을 대체하지 않으며 더 깊은 이미지 뷰어 라이프 사이클 제어 또는 콘솔 전용 작업에 사용하지 마십시오. 파일 전송, 패키지 관리, 명령어 실행 및 빠른 탐색을 위해 사용하십시오.

실용적인 규칙: Android에 속하는 작업은 시작합니다. adb shell이미지 뷰어 자체에 속하는 작업은 콘솔을 사용합니다.

플러그인层, 플랫폼 특정 동작 및 장치 상태에 대한 질문을 처리하는 팀에게 더 광범위한 디버깅 도구가 도움이 됩니다. 터미널 작업이 추측으로 변하지 않도록 합니다. 이 디버깅 리소스는 ADB 워크플로우와 잘 맞습니다.


이미지 뷰어 콘솔을 사용하는 방법

이미지 뷰어 콘솔은 별도의 제어 평면입니다. 이 차이점은 중요합니다. Google은 localhost 포트에서만 듣는다고 문서화합니다. 5554부터 5585까지, 인증이 필요한 명령어를 받기 전에, 다음과 같은 명령어를 사용합니다. avd start, avd stop, avd status, ping, 그리고 rotate , 그리고 adb 사용할 수 있는 명령어는 emulator-level 액션을 수행할 때 사용할 수 있습니다. 그게 왜 그런건지 설명해 드릴게요.

Android Emulator Console Essentials

인증을 하기 전에 쓸데없는 것을 보내지 마세요.

Google의 문서에 따르면, telnet localhost console-port와 연결하고, OK를 기다리세요. auth auth_token 그 다음에 ~/.emulator_console_auth_token을 사용하세요. 이 토큰은

콘솔은 또한 발견할 수 있습니다. help, help command, 그리고 help-verbose 있는 이유가 있습니다, 그리고 시간을 절약할 수 있습니다. emulator가 수락하는 명령어를 확인하는 경우, adb 는 나중에 설명할 수 있습니다.

콘솔에 속하는 것은 무엇인지 알 수 있습니다.

콘솔 명령어는 라이프 사이클과 emulator-side 상태에 사용됩니다. avd start 그리고 avd stop 는 명백한 예시입니다, 그러나 rotate 그리고 ping 는 반응성 확인이나 장치 변경 시뮬레이션과 같은 경우에도 유용합니다. emulator는 이 맥락에서 인프라와 같이 작동합니다.因为이곳에서 시작, 준비 및 종료를 스크립트할 수 있기 때문입니다.

일반적인 실수는 emulator 콘솔과 Android 셸을 혼동하는 것입니다. adb shell그들은 가까이서 비슷해보이지만, 프로토콜은 다릅니다. 콘솔은 인증되고 포트 바운드되며, 셸 접근은 일반적으로 이 디버깅 리소스 콘솔 준비 검사와 잘 어울립니다.

좋은 자동화 게이트: 프로세스 시작만으로 테스트를 시작하지 마세요. 콘솔 핸드셰이크가 성공하고 가상 장치가 예상한 상태를 보고할 때만 테스트를 시작하세요.

이미지에서 허용하는 경우 루트 접근

안드로이드 에뮬레이터 내부의 터미널 앱과 루트 접근

루트 접근

이미지에 따라 다릅니다. 시스템 이미지가 허용하는 경우

그리고 adb root and 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 이 플러그인 가이드.

앱-사용자 전용 접근을 사용하여 문제를 해결하세요.

Android 에서 모든 문제를 해결할 필요는 없습니다. 디버그 빌드의 경우, adb shell run-as <package> 시스템 쓰기 권한이 필요하다면, 시스템 파티션은 writable 상태여야 하며, 이는 다른 클래스의 설정입니다. 일상적인 에뮬레이터 작업을 위해, host-side가 더 나은 시작점이며, host 접근이 충분하지 않은 경우에만 on-device 터미널을 사용하는 것이 좋습니다. 권한을 사용하는 규칙은 간단합니다. 문제를 재현할 수 있는 가장 작은 권한을 사용하세요.

네트워킹, 포트 포워딩 및 키보드 단축키 adb shell 호스트 경계를 넘어야 하는 트래픽이 있는 즉시, 터미널-첫 에뮬레이터 워크플로가 실제로 작동합니다.

호스트 서비스를 호출하는 앱이 기대하는 경우, 로컬 개발 서버를 실행하는 기계에 에뮬레이터를 연결하는 가장 깨끗한 방법입니다.

호스트에서 리스너가 기기를 통해 트래픽을 받는 경우를 처리합니다. adb reverse tcp:8080 tcp:8080 오른쪽 레이어를 디버깅하기 전에, 올바른 방향을 선택하세요. adb forward 네트워킹 문제를 모두 에뮬레이터 문제라고 부르는 것은 많은 시간을浪費하는 경향이 있습니다. 실제로 포트 방향이 잘못된 경우가 많습니다.

__CAPGO_KEEP_0__

__CAPGO_KEEP_1__ adb reverse Android 에뮬레이터 터미널 adb forward 호스트 서비스에 에뮬레이터가 접근할 수 있도록 해주고

호스트 포트로 장치 트래픽을 전송하여 연결 경로가 결정되면 해당 명령어를 적용합니다. adb shell ip route 연결이 여전히 이상해 보인다면, VM 내의 경로 테이블을 확인하고 ifconfig와 인터페이스를 검사하세요. 라우팅이 정상이지만 서비스가 여전히 연결을 거부하는 경우, 일반적으로 오류는 호스트 리스너나 전달 설정에 있습니다. 안드로이드 자체가 아니라. 로컬 트래픽 지연이 디버깅 중에 보이는 것을 어떻게 형성하는지 더 넓은 관점에서 살펴보려면

네트워크 지연 시간 설명서

이 유용한 동반자 읽기를 참조하세요. F2 메뉴를 열다 ESC Back으로 작동합니다. F7 Power, Alt-Enter를 처리합니다. Alt-Enter 노트북과 대형 모니터에서 중요합니다. 제어 표면이 키보드에 살아 나면 에뮬레이터는 일일 작업 도구처럼 행동하기 시작합니다. 마우스로 창을 밀어내는 대신.

deprecated 플래그

이것은 이전에 무엇을했습니까? modern replacement 현재 문서에서 작동하지 않으므로 launch 스크립트에서 제거하세요.
-audio-in 현재 문서에서 작동하지 않으므로 launch 스크립트에서 제거하세요. 현재 문서에서 작동하지 않으므로 launch 스크립트에서 제거하세요.
-audio-out 현재 문서에서 작동하지 않으므로 launch 스크립트에서 제거하세요. 현재 문서에서 더 이상 작동하지 않으므로 launch 스크립트에서 제거하십시오.
-enable-kvm 가상화 경로를 요청했습니다. 현재 문서에서 더 이상 작동하지 않으므로 launch 스크립트에서 제거하십시오.
-gps GPS 동작을 제어했습니다. 현재 문서에서 더 이상 작동하지 않으므로 launch 스크립트에서 제거하십시오.
-skin 장치 스킨을 설정했습니다. 현재 문서에서 더 이상 작동하지 않으므로 launch 스크립트에서 제거하십시오.
-skindir 스킨 디렉토리 경로를 지정했습니다. 현재 문서에서 더 이상 작동하지 않으므로 launch 스크립트에서 제거하십시오.
-useaudio 오디오 사용량을 켰습니다. 현재 문서에서 더 이상 작동하지 않으므로 launch 스크립트에서 제거하십시오.

구 버전의 스니펫이 새 스크립트로 복사될 때 빠르게 썩는 경향이 있으므로 Google은 현재 에뮬레이터 문서에서 이러한 플래그를 더 이상 작동하지 않는 것으로 나열합니다. 현재 에뮬레이터 명령 줄 노트만약 여전히 공유 쉘 스크립트에 포함되어 있다면, 이를 제거하고 다시 시작 테스트를 진행해 보세요.

트러블 슈팅 및 2026 터미널 워크플로우

검은 화면 offline, unauthorized, KO: missing auth검은 화면, 포트 충돌 및陈舊快照은 일반적인 실패 클러스터입니다. 문제를 해결하는 것은 증상과 원인 간에 매핑을 할 때 직관적입니다. 부팅이 멈추면 일반적으로快照 상태를指示하고, 콘솔 인증 실패는 일반적으로 토큰 파일 또는 handshake가 동기화되지 않은 경우입니다.

https://capgo.app에서 가져온 스크린샷

실패 시간을 가장 많이 소모하는 실패에 대한 일 줄된 해결책

만약 에뮬레이터가 검은 화면을 넘어가지 않는다면, 새로고침 경로를 초기화하고陈舊 상태를 삭제하세요. 만약 adb says offline 또는 unauthorized만약 에뮬레이터가 검은 화면을 넘어가지 않는다면, 새로고침 경로를 초기화하고陈舊 상태를 삭제하세요. 만약 에뮬레이터가 계속해서 검은 화면을 보여주면, 기기와 호스트가 여전히 일치하는지 확인하고, 에뮬레이터 인스턴스가 여전히 일치하는지 확인하세요. 만약 콘솔이 KO: missing auth, 토큰 파일과 핸드셰이크 경로를 먼저 확인하세요. 콘솔이 명령을 수락하기 전에 이 단계가 정확해야 합니다.

포트 충돌은 일반적으로 이전 에뮬레이터가 정상적으로 종료되지 않았음을 나타내는 신호로, 다음 실행 전에 사용 중인 포트를 지우기 위해야 합니다. 부트가 절대 완료되지 않는다면, 스냅샷 드리프트가 발생한 것으로 간주하고 결정적인 시작을 강제하세요. 2026년 이래로 터미널 워크플로우가 신뢰할 수 있는 이유는 이 습관이 개인별 플래그보다 더 큰 것입니다.

워크플로우를 시스템처럼 다루세요, 클릭의 연속성이 아닙니다

안정적인 패턴은 예측 가능한 부팅, 인증 콘솔 접근입니다. adb shell for app-level work, and a rollback path when state drifts. That’s the discipline behind fast mobile iteration, whether you’re testing a native app or shipping updates to a Capacitor app through a controlled release pipeline.

__CAPGO_KEEP_0__ 앱이 신뢰할 수 있는 릴리스 및 복구 경로와 함께 에뮬레이터로 테스트되는 모바일 앱을 개발하는 경우, __CAPGO_KEEP_0__은 팀에게 스토어 리뷰를 기다리지 않고 자바스크립트, CSS, config, 및 asset修정을 빠르게 배포할 수 있는 빠른 방법을 제공합니다. __CAPGO_KEEP_0__


Capgo Capgo __CAPGO_KEEP_0__

Capacitor 앱에 대한 즉시 업데이트

When a web-layer bug is live, ship the fix through Capgo instead of waiting days for app store approval. Users get the update in the background while native changes stay in the normal review path.

__CAPGO_KEEP_0__의 전문적인 모바일 앱을 만들기 위해 필요한 최고의洞察를 제공합니다.

시작하기

최신 블로그

Capgo은 전문적인 모바일 앱을 만들기 위해 필요한 최고의洞察를 제공합니다.