메인 콘텐츠로 건너뛰기

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

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

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

터미널이란?

터미널이란?

목차

안드로이드 에뮬레이터 터미널이 필요한 이유

GUI가 멈췄을 때 가장 명백한 경우입니다. 에뮬레이터 창이 여전히 열려 있지만, 그것을 신뢰할 수 없으며, 클릭을 통해 이동할 수 없으며, 빌드 서버에 대한 워크플로우가 확대되지 않습니다. 터미널은 창이 처리할 수 없는 부분을 처리합니다. Google의 에뮬레이터 문서는 명령 줄 및 콘솔을 자동화 및 원격 제어 도구로 설명하며, 런치 구문이 emulator -avd avd_name 또는 emulator @avd_nameAndroid Emulator 명령줄 참조 emulator -help 터미널 제어를 표준화하는 이유.

터미널 경로를 사용하는 첫 번째 시점은 보통 매력적이지 않습니다. QA 스크립트가 깨끗한 장치 상태를 필요로 하거나 개발자가 같은 AVD가 Linux와 macOS에서 부팅되도록 필요로 하거나 CI 러너가 테스트 대상이 나타나지 않아도 테스트를 시작할 수 있도록 해야 할 때입니다. 그 때 에뮬레이터는 데스크톱 앱처럼 행동하지 않고 인프라처럼 행동하기 시작합니다.

실용적인 규칙:

반복, 로깅, 또는 실패 후 복구가 필요한 작업이 있다면, 터미널 경로를 먼저 사용하십시오. Google도 에뮬레이터를 공식 명령줄 도구 세트에 함께 배치하고 있습니다. 이는 중요합니다. Android 자동화는 인터페이스 스택이기 때문입니다. 단 하나의 인터페이스가 모든 것을 pretended하는 것이 아닙니다.

Android adb 및 에뮬레이터 도구 장치 검사 및 셸 접근을 위해 를 사용하십시오. 그런 다음 에뮬레이터 콘솔을 사용하여 라이프 사이클 제어 및 에뮬레이터 전용 명령을 사용하십시오. 역할을 섞는 것은 스크립트가 취약해지는 원인이 됩니다. Android Emulator 명령줄 참조터미널 제어를 표준화하는 이유 adb Android adb 및 에뮬레이터 도구

다른 오해를 버려야 할 것은 에뮬레이터 터미널이 GUI wrapper에 불과하다는 것이다. 아니다. 콘솔은 인증되며 localhost 포트에 바인딩되어 명령어와 같은 명령어를 지원한다. avd start, avd stop, avd status, ping, 그리고 rotate Android Emulator 콘솔 참조. 따라서 그것은 프로덕션급 제어 평면처럼 행동한다. 초보자용 샌드박스처럼 행동하지 않는다.

하이브리드 및 Capacitor 워크플로우의 경우, 설치 또는 디버깅하기 전에 같은 discipline가 중요하다. 설치하는 쪽을 보려면 Android Capacitor 앱 설정 을 참조하라.

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

첫 번째 명령어는 이미 사용 가능한 것을 보여주는 것이다. emulator -list-avds를 실행하고, 원하는 AVD를 선택한 후 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.

개발자 CLI 명령어를 입력하는 동안 노트북 화면과 나무 책상

아직도 중요시하는 런치 플래그

깨끗한 시작은 정상적인 실행과 디버깅 세션의 차이입니다. 일상적인 작업에서 유용한 터미널 플래그는 CI 및 무인 호스트의 부팅 동작을 예측할 수 있게 해주는 플래그입니다. -no-window 무인 경로 -no-snapshot 깨끗한 상태를 강제합니다. -no-audio 그리고 -no-boot-anim 필요하지 않은 잡음들을 제거하고 -gpu swiftshader_indirect 하드웨어 가속이 사용할 수 없는 경우 실용적인 대안입니다.

그 combination은 "에뮬레이터가 시작되었습니다"와 "에뮬레이터가 시작되었습니다. pipeline이 신뢰할 수 있는 방식으로"의 차이입니다. 런치 명령어는 테스트 계약의 일부가 되고, 편의 wrapper가 아닌 것입니다. Capacitor 또는 하이브리드 앱 워크플로우를 위해 장치 하나를 시작할 때, 디버깅 또는 설치 단계가 시작되기 전에 동일한 런치 규칙이 적용됩니다. Capacitor 개발자에게는 에뮬레이터 명령어와 함께 가치 있는 안드로이드 설정 가이드가 있습니다. 장치 목록에서 시작하세요, 메모리에서 시작하지 마세요.

나는 가장 자주 보는 실수는 기계가 가지고 있는 것을 확인하지 않고 가정하는 것입니다. AVD 목록을 먼저 표시하면 시간을 절약할 수 있습니다. 기계가 이미지를 볼 수 있는지, 셸이 이미지를 볼 수 있는지 알려줍니다. 그런 다음 하나의 알려진 장치를 시작하고 부팅 경로를 관찰하고, 플래그를 조정하기 전에만 그런 다음 플래그를 조정합니다.

__CAPGO_KEEP_0__

유용한 습관: 로컬 작업과 CI를 위한 한 개의 정리된 런치 명령어를 유지하고, 더 엄격한 명령어를 CI에 사용하십시오. pipeline이 laptop에서 제공하는 모든 편리한 플래그를 inherit하지 않도록 하십시오.

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

에뮬레이터를 adb Shell로 구동하기

에뮬레이터가 시작되면 adb 가 가장 자주 사용하는 제어 표면이 됩니다. adb devices attached된 것을 보여주고, adb -s emulator-5554 shell 특정 인스턴스와 특정 포트를 대상으로 하도록 합니다. 여러 가상 장치가 있는 머신에서, 일반적인 명령어는 쉽게 잘못된 대상에 부딪힐 수 있습니다. 시리얼 번호는 automation이 사용하려고 한 에뮬레이터를 향하게 유지합니다.

Android 에뮬레이터 관리 및 개발을 위한 adb shell 명령어 흐름 프로세스의 3단계 인포그래픽입니다.

연결하고, shell이 필요할지 결정하십시오.

one-off 명령어와 인터랙티브 shell의 분리는 처음에는 중요하지 않아 보이지만, 실제로는 더 중요합니다. 설정을 검사하거나 파일을 수집할 필요가만 있다면, 단일 adb shell 명령은 더 깨끗합니다. 앱 동작을 단계별로 추적하는 경우, 인터랙티브 셸로 들어가서 작업이 끝날 때까지 그곳에 머물러 있습니다.

adb push 그리고 adb pull 파일 이동을 처리합니다. adb install -r 반복적인 로컬 테스트를 위해 실제적인 경로입니다. 그리고 adb exec-out screencap 신뢰할 수 있는 스크린샷 캡처 경로를 제공합니다. 스크린 녹화는 실패한 실행에서 빠른 아티팩트가 필요할 때도 직접적인 경로입니다. adb shell screenrecord 패키지 설치자 및 로컬 사이드 로딩 워크플로우에서 이 설치 안내서는 유용한 동반자입니다. ADB를 앱 작업에 사용하고, 에뮬레이터 라이프 사이클 작업에는 사용하지 마십시오..

Android 자체 내에서 실행되는 명령에 적합한 계층입니다. 공유 저장소에 저장된 스크립트가 있다면

adb 실제 자동화 스택에 잘 맞습니다. 또한 adb shell sh /sdcard/run.sh 디버그 빌드에서 유용합니다. 앱 전용 파일을 제공하기 때문에 루트를 강제하지 않습니다. run-as <package> 한계는 명확합니다.

이것은 adb 이미터널을 대체하지 않으며, 더 깊은 이미터널 생명주기 제어 또는 콘솔 전용 작업에 적합한 도구도 아닙니다. 파일 전송, 패키지 관리, 명령어 실행 및 빠른 감찰을 위해 사용하세요. 그 이상은 하지 마세요.

실용적인 규칙: Android에 속하는 작업은 .으로 시작하고, 이미터널 자체에 속하는 작업은 콘솔을 사용하세요. adb shell플러그인 층간 작업, 플랫폼별 동작 및 장치 상태에 대한 질문을 하는 팀에게는 더 광범위한 디버깅 도구가 터미널 작업이 추측으로 변하지 않도록 도움이 됩니다.

이 디버깅 리소스는 adb 워크플로우와 잘 어울립니다. 이미터널 콘솔을 adb 이외의 용도로 사용하기 이미터널 콘솔은 별도의 제어 평면입니다. 이 차이점은 중요합니다. Google은 localhost 포트 5554부터 5585까지만 듣고 있으며, 인증이 필요한 명령어를 수락하기 전에 명령어를 수락하고, 명령어와 같은 명령어를 사용합니다.


5554

, ,, avd start, avd stop, avd status, ping, rotate __CAPGO_KEEP_0__ adb __CAPGO_KEEP_0__

안드로이드 에뮬레이터를 터미널로 제어하는 데 꼭 필요한 콘솔 이슈

인증을 먼저 진행해야 유용한 정보를 전송할 수 있습니다

구글의 문서화된 방법은 telnet localhost console-portwait for OK그 다음에 auth auth_token 을 사용하여 토큰을 저장한 ~/.emulator_console_auth_token파일이 없으면 telnet 연결은 임의의 토큰으로 파일을 생성합니다. 이메피머럴 CI 환경에서, 파일을 의도적으로 보존하거나 재설정해야 합니다.-surprise 인증 실패는 거의 항상 상태 관리 실패입니다.

콘솔은 또한 발견할 수 있습니다. help, help commandhelp-verbose 은 이유가 있습니다. 그리고 시간을 절약할 수 있습니다. 에뮬레이터가 받을 수 있는 명령어를 확인할 때 사용하는 것이 좋습니다. 그보다는 추측하고 희망하는 것보다 낫습니다. adb 이것은 나중에 처리할 수 있습니다.

콘솔에 속하는 것을 알 수 있나요?

라이프사이클과 에뮬레이터 측 상태에 대한 콘솔 명령어입니다. avd start 그리고 avd stop 명백한 예시지만 rotate 그리고 ping 응답성 확인이나 장치 변경 시뮬레이션과 같은 경우에도 유용합니다. 에뮬레이터는 이 맥락에서 인프라와 같이 작동합니다. 왜냐하면 시작 시 스크립트를 작성할 수 있는 동일한 장소에서 준비성과 종료를 스크립트할 수 있기 때문입니다.

에뮬레이터 콘솔과 안드로이드 셸을 혼동하는 일반적인 오류입니다. 그들은 거리에서 비슷해 보이지만 프로토콜은 다릅니다. 콘솔은 인증되고 포트 바운드되며, 셸 접근은 일반적으로 adb shell으로 처리됩니다. 따라서 스크립트는 다른 타임아웃과 다른 실패 처리가 필요합니다. 플랫폼 특정 워크플로우에서 터미널 신뢰성을 위해 이 디버깅 리소스는 콘솔 준비성 확인과 잘 어울립니다.

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

그 결정 하나만으로 많은 불안정한 "부팅했지만 준비되지 않은" 실패를 방지할 수 있습니다.

터미널 앱과 루트 접근

일부 작업은 호스트에서 아닌 VM 내부에 속합니다. 그 경우 에뮬레이터 내부에 실제 터미널 앱을 설치하는 것이 가장 간단한 방법입니다. Termux는 표준 선택이며, 호스트에서 터미널 앱을 탭하는 것보다 더 실제 Unix 워크플로에 가깝습니다.

이미지에 따라 루트 접근

루트 접근은 마법이 아닙니다. 이미지에 따라 루트 접근이 가능하면 adb root 그리고 adb shell su 일반적인 구글 플레이 이미지는 루트 작업에 적합하지 않습니다. 커스텀 AVDs는 일반적으로 더 많은 접근성을 제공합니다.

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 관련 루트 체크는 __CAPGO_KEEP_0__ 프로젝트에 대해 이 플러그인 가이드에서 설명합니다..

이 플러그인 가이드

루트 접근을 사용하기 전에 앱-사용자 전용 접근을 사용하세요. adb shell run-as <package> 어플리케이션-사설 디렉터리를 검사하기 위해 충분한 경우는 폭파 반경을 넓히지 않고 디렉터리를 검사할 수 있습니다. 이는 더 적은 권한의 도구를 사용하여 워크플로우를 정렬하는 더 깨끗한 습관입니다.

시스템 쓰기를 필요로 한다면, 시스템 파티션은 writable 상태여야 하며, 이는 전혀 다른 설정 클래스입니다. 일상적인 에뮬레이터 작업을 위해 호스트 측 adb shell 호스트 측이 더 좋은 시작점이며, 디바이스 측 터미널은 호스트 접근이 충분하지 않은 경우에만 특수화된 레이어로 다루어져야 합니다. 규칙은 간단합니다. 여전히 버그를 재현할 수 있는 가장 작은 권한을 사용하십시오.

네트워킹, 포트 포워딩 및 키보드 단축키

호스트 경계를 넘어야 하는 트래픽이 있는 즉시 터미널-첫 에뮬레이터 워크플로가 실제로 됩니다. adb reverse tcp:8080 tcp:8080 호스트 서비스를 향해 에뮬레이터를 지시하는 가장 깨끗한 방법입니다. 특히 앱이 호스트 서비스를 호출하기를 기대할 때. adb forward 호스트에서 트래픽을 받는 경우를 처리합니다.

디버깅을 시작하기 전에 올바른 레이어를 선택하십시오.

네트워킹 문제를 모두 에뮬레이터 문제라고 부르는 경우가 많아 시간을 많이浪費합니다. 실제로는 포트 방향이 잘못되어 있습니다. adb reverse 호스트 서비스에 에뮬레이터를 접근시키는 것입니다. adb forward 호스트 포트를 향해 디바이스 트래픽을 보내는 것입니다. 연결 경로가 어떤 명령어를 적용해야 하는지 결정합니다.

연결이 여전히 이상해 보인다면, VM 내의 경로 테이블을 확인하십시오. adb shell ip route 그리고 인터페이스를 검사합니다. ifconfig. 경로가 정상적으로 보이지만 서비스가 연결을 거부할 때, 일반적으로 오류는 호스트 리스너나 전달 설정에 있지 않습니다. Android 자체가 아닙니다. 로컬 트래픽 지연이 디버깅 중에 무엇을 볼 수 있는지 shape하는 방법에 대한 더 광범위한 시각을 원한다면 네트워크 지연 시간 설명자

디버깅 중에 무엇을 볼 수 있는지 shape하는 방법에 대한 더 광범위한 시각을 원한다면 유용한 동반자 읽기입니다.

터미널 이야기의 일부인 키보드 제어 구글의 키보드 매핑은 에뮬레이터를 데스크톱 목표로 훨씬 더 좋은 대상으로 만듭니다. 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포트 충돌 및陈舊快照는 일반적인 실패 클러스터입니다. 문제를 원인으로 매핑하면 해결책이 직관적입니다. 부팅이 멈추면 일반적으로快照 상태를指示하며, 콘솔 인증 실패는 토큰 파일 또는 handshake가 동기화되지 않은 경우입니다.

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

실패로 인해 가장 많은 시간을浪費하는 일련의 일치된 해결책

에미레이터가 검은 화면으로 멈추지 않으면, 새로고침을 위해 깨끗한 시작 경로와陈舊 상태를 삭제하십시오. 만약 adb 라고합니다. offline 또는 unauthorizedContext: HTML 텍스트 조각 (부모 키 `alternatives_cta_questions`). 페이지/영역: Capacitor live-update 대안 비교 페이지. 역할: 장기 마케팅 또는 법적 문단. Seen in: 페이지 alternatives.astro. Capgo 제품/브랜드 및 개발자 용어를 정확하게 유지하십시오. 메시지 키 `alternatives_cta_questions` (대안 CTA 질문). | HTML 텍스트 조각 (부모 키 `appflow_cta_questions`). 페이지/영역: Appflow 비교/이동 마케팅 복사본. 역할: 장기 마케팅 또는 법적 문단. Seen in: 페이지 ionic-appflow.astro. Capgo 제품/브랜드 및 개발자 용어를 정확하게 유지하십시오. 메시지 키 `appflow_cta_questions` (Appflow CTA 질문). | HTML 텍스트 조각 (부모 키 `capwesome_cta_questions`). 페이지/영역: Capawesome 비교 페이지. 역할: 장기 마케팅 또는 법적 문단. Seen in: 페이지 capwesome.astro. Capgo 제품/브랜드 및 개발자 용어를 정확하게 유지하십시오. 메시지 키 `capwesome_cta_questions` (Capwesome CTA 질문). | HTML 텍스트 조각 (부모 키 `consulting_faq_subtitle`). 페이지/영역: 컨설팅 서비스 페이지. 역할: 섹션 서브 타이틀 또는 태그 라인. Seen in: 페이지 consulting.astro. Capgo 제품/브랜드 및 개발자 용어를 정확하게 유지하십시오. 메시지 키 `consulting_faq_subtitle` (컨설팅 FAQ 서브 타이틀). | 페이지/영역: Appflow 비교/이동 마케팅 복사본. 역할: 짧은 UI 레이블 또는 네비게이션 아이템. Seen in: 페이지 ionic-appflow.astro, 페이지 ionic-enterprise-plugins.astro, 페이지 solutions/ionic-enterprise-plugins.astro. 메시지 키 `appflow_plugins_or` (Appflow 플러그인 또는). KO: missing auth, 기기와 호스트 및 에미레이터 인스턴스가 여전히 일치하는지 확인하기 위해 기기를 다시 연결하십시오. 콘솔이 반환하는 경우

, 토큰 파일 및 handshake 경로를 확인하고, 콘솔이 명령을 수락할 때까지 그 단계가 정확한지 확인하십시오.

포트 충돌은 일반적으로 이전 에미레이터가 정상적으로 종료되지 않은 경우에 발생하므로, 다음 실행 전에 사용 중인 포트를 해제해야 합니다. 부팅이 완료되지 않으면,快照 드리프트가 발생한 것으로 가정하고, 결정론적 시작을 강제하십시오. 그 습관이 2026년의 터미널 워크플로우가 신뢰할 수 있는 이유입니다.

워크플로우를 시스템처럼 다루십시오, 클릭의 연속성이 아닙니다. adb shell 앱 수준 작업을 위해, 그리고 상태가 이탈할 때 롤백 경로가 필요합니다. 그게 빠른 모바일 반복의 discipline입니다. native 앱을 테스트하거나, Capacitor 앱에 대한 제어된 릴리스 PIPELINE을 통해 업데이트를 배포하는 경우에요.

신뢰는 이익입니다. 에뮬레이터 터미널이 제어 평면으로 연결되면, 더 이상 창이 반응하는지 여부를 물어보지 않고, 장치 상태가 테스트에서 기대하는 정확한 상태인지 여부를 물어보게 됩니다.


빌드 중인 모바일 앱이 에뮬레이터로 테스트를 수행하고, 신뢰할 수 있는 릴리스 및 복구 경로가 필요하다면, Capgo은 팀에게 JavaScript, CSS, config, 및 asset 수정을 빠르게 배포할 수 있는 빠른 방법을 제공합니다. Visit Capgo __CAPGO_KEEP_0__

실시간 업데이트: Capacitor 앱

웹 층의 버그가 활성화되어 있는 경우 Capgo를 통해修正을 배포하세요. 앱 스토어 승인 대기 없이 사용자에게 업데이트를 제공하세요. 네이티브 변경은 일반적인 검토 경로에 남겨둡니다.

마틴의 인간 지원

시작하기

최신 뉴스

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