유선 연결이 귀찮을 때. Show 유선 연결은 충전이 느려서 짱날 때. 0. 조건 A. 처음 설정시에는 usb 케이블을 연결해야 합니다. B. wifi 와 PC 의 네트워크가 같아야 합니다.(같은 공유기, 허브. 기본 Gateway가 같으면 됩니다.) 1. 환경변수 등록. 이건 편하게 사용하기 위해서 하는 거라 넘기셔도 상관은 없습니다. 환경변수 등록 자체가 다른 프로그램 등에서도 잘 쓰이는 편이니 알아둘 겸 해보시는 것도 나쁘진 않을 것 같네요. 시스템 속성으로 들어가 주세요(내컴퓨터, 내 PC 에서 우클릭 후 속성) 그리고 고급 시스템 설정 으로 들어 간 후 환경변수 부분을 클릭하시면 됩니다 그후 시스템 변수에서 Path 항목을 찾은 후 더블 클릭 혹은 편집 을 눌러 주세요. 그러면 환경 변수 편집 창이 뜬느데, 새로 만들기를 누른 후 C:\Users\사용자명\AppData\Local\Android\Sdk\platform-tools 이 경로를 입력하시면 됩니다. 그리고 안정적인 사용을 위해서는 재부팅을 추천드립니다. 2. 개발자옵션 활성화 폰마다 찾아가는 경로는 다른데 빌드번호를 여러번 클릭하면 되는 건 같습니다. 활성화 시키고 usb 디버깅 도 활성화 시켜주세요. 만약 청므 연결시 디버깅 허용 관련 메시지가 안 뜬다면 adb devices 를 프롬프트에 입력해 주시면 팝업이 뜰 겁니다. 3. 디바이스 등록 정확한 명칭은 아니지만, 대충 그런 느낌이라........ 명령 프롬프트를 열고 adb tcpip 1234(포트명은 임의로 지정 가능) 와 같이 입력해 주세요. 그러면 요런 메시지를 확인 할 수 있습니다.(위에 메세지들은 바로바로 안 된 내용이니 무시하셔도 됩니다.) 4. 스마트폰 ip 확인하기 이것도 당연히 폰마다 다릅니다. 삼성이 경우 그냥 ssid 를 클릭하면 ip 주소가 나옵니다. LG 의 경우 ssid 를 눌러도 ip 주소는 안 나옵니다. wifi 설정 부분에서 우측 상단에 있는 3점을 터치한 후 wifi 고급 설정을 터치 하면 하단에 정보 부분이 있고 ip 주소를 확인 할 수 있습니다. 이제 확인 한 ip주소를 기억해 두세요. 5. 연결 프롬프트 창을 열고 adb connect IP주소:포트 입니다. 가령 예를 들면 adb connect 192.168.0.123:1234 와 같이 되겠네요. 연결이 되면 connect to ip주소 가 뜨게 됩니다. 6. 확인 android studio 를 연 후 프로젝트를 열고 run 을 클릭하면 디바이스가 보이면 성공입니다. 7. 이 방법의 문제점 및 해결 방법 이 방법의 큰 문제점은... 일단 재부팅 하면 세팅이 초기화 되어 있습니다. 작업을 다시 해 줘야 된다는 거지요.(짜증나게) 그나마 조금이라도 절차를 줄일 수 있는 방법은 bat 파일을 만들어서 이용하는 겁니다. 스마트폰의 ip 주소를 고정으로 바꿔 두시면 더 편하겠지요. 바탕화면에 txt 파일을 만들어 주고 확장자를 bat 로 변경해 주세요. 그리고 내용을 입력해 주시면 됩니다. adb tcpip 1234(불필요) adb connect ip주소:1234 요렇게만 하시면 됩니다. pc 가 종료 된 후에는 usb를 연결 한 후 입력을 해 줘야 하는 불편함이 있습니다. 재부팅 후에 adb tcpip 포트 이걸 하지 않아도 연결하는 명령어만 입력해 주면 알아서 되네요. 다행히 설정값이 저장되긴 하나 봅니다. 이 부분만 해결되면 좋을 텐데, 방법을 찾아보고 있는데 마땅한게 안 보이네요. 나중에라도 찾게 되면 추가하도록 하겠습니다. Android 디버그 브리지(adb)는 기기와 통신할 수 있도록 지원하는 다목적 명령줄 도구입니다. adb 명령어는 앱의 설치 및 디버깅과 같은 다양한 기기 작업에 도움이 되며, 기기에서 다양한 명령어를 실행하는 데 사용할 수 있는 Unix 셸에 대한 액세스를 제공합니다. 이 도구는 다음과 같은 세 가지 구성요소를 포함하는 클라이언트-서버 프로그램입니다.
연결 도우미를 사용하여 일반적인 문제를 해결하는 방법을 포함하여 ADB를 통해 사용할 기기 연결에 관한 자세한 내용은 하드웨어 기기에서 앱 실행을 참고하세요. adb 작동 방식adb 클라이언트를 시작하면 먼저 이 클라이언트는 이미 실행 중인 adb 서버 프로세스가 있는지 확인합니다. 없으면 서버 프로세스를 시작합니다. 서버가 시작되면 이 서버가 로컬 TCP 포트 5037에 바인딩되고 adb 클라이언트로부터 전송되는 명령어를 리슨합니다. 모든 adb 클라이언트는 포트 5037을 사용하여 adb 서버와 통신합니다. 그런 다음 서버는 실행 중인 모든 기기와의 연결을 설정합니다. 서버는 5555~5585 범위(처음 16개의 에뮬레이터가 사용하는 범위)에서 홀수 포트를 스캔하여 에뮬레이터를 찾습니다. 서버가 adb 데몬(adbd)을 찾으면 포트와의 연결을 설정합니다. 각 에뮬레이터는 한 쌍의 순차적 포트를 사용합니다. 하나는 콘솔 연결용 짝수 포트이고 다른 하나는 adb 연결용 홀수 포트입니다. 예: 에뮬레이터 1, 콘솔:
5554 위에서 알 수 있듯이 포트 5555에서 adb에 연결된 에뮬레이터는 콘솔이 포트 5554에서 리슨하는 에뮬레이터와 동일합니다. 서버가 모든 기기와의 연결을 설정하면 사용자는 adb 명령어를 사용하여 기기에 액세스할 수 있습니다. 서버는 기기 연결을 관리하고 여러 adb 클라이언트의 명령어를 처리하므로 개발자는 임의의 클라이언트(또는 스크립트)에서 임의의 기기를 제어할 수 있습니다. 기기에서 adb 디버깅 사용 설정USB를 통해 연결된 기기에서 adb를 사용하려면 기기 시스템 설정의 Developer options 아래에서 USB debugging을 사용 설정해야 합니다. Wi-Fi를 통해 연결된 기기에서 adb를 사용하려면 Wi-Fi를 통해 기기에 연결을 참고하세요. Android 4.2 이상 버전에서는 개발자 옵션 화면이 기본적으로 숨겨져 있습니다. 이 옵션을 표시하려면 Settings > About phone으로 이동하여 Build number를 일곱 번 탭합니다. 이전 화면으로 돌아가 하단에서 Developer options를 찾습니다. 일부 기기에서는 개발자 옵션 화면의 위치나 이름이 다를 수도 있습니다. 이제 USB로 기기를 연결할 수 있습니다. 참고: Android 4.2.2 이상을 실행하는 기기를 연결하면 이 컴퓨터를 통해 디버깅을 허용하는 RSA 키를 수락할지 묻는 대화상자가 표시됩니다. 이 보안 메커니즘은 개발자가 기기를 잠금 해제하고 대화상자를 승인하지 않으면 USB 디버깅 및 기타 adb 명령어를 실행할 수 없도록 보장하기 때문에 사용자 기기를 보호하는 역할을 합니다. USB를 통해 기기에 연결하는 방법을 자세히 알아보려면 하드웨어 기기에서 앱 실행을 참고하세요. Wi-Fi를 통해 기기에 연결(Android 11 이상)참고: 아래 안내는 Android 11을 실행하는 Wear 기기에는 적용되지 않습니다. 자세한 내용은 Wear OS 앱 디버깅 가이드를 참고하세요. Android 11 이상에서는 Android 디버그 브리지(adb)를 사용하여 워크스테이션에서 무선으로 앱을 배포하고 디버깅할 수 있도록 지원합니다. 예를 들어 USB를 통해 기기를 실제로 연결하지 않고도 디버그 가능한 앱을 여러 원격 기기에 배포할 수 있습니다. 이렇게 하면 드라이버 설치와 같은 일반적인 USB 연결 문제를 처리할 필요가 없습니다. 무선 디버깅을 시작하려면 먼저 다음 단계를 완료해야 합니다.
무선 디버깅을 사용하려면 QR 코드 또는 페어링 코드를 사용하여 기기와 워크스테이션을 페어링해야 합니다. 워크스테이션과 기기가 동일한 무선 네트워크에 연결되어 있어야 합니다. 기기에 연결하려면 다음 단계를 따르세요.
무선 연결 문제 해결기기를 무선으로 연결하는 데 문제가 있다면 다음 문제 해결 단계에 따라 문제를 해결할 수 있습니다. 워크스테이션과 기기가 기본 요건을 충족하는지 확인무선 디버깅 기본 요건을 충족하려면 다음을 확인하세요.
다른 알려진 문제 확인다음은 Android 스튜디오의 무선 디버깅과 관련하여 현재 알려진 문제 목록과 해결 방법입니다.
Wi-Fi를 통해 기기에 연결(Android 10 이하)참고: 아래 안내는 Android 10 이하를 실행하는 Wear 기기에는 적용되지 않습니다. 자세한 내용은 Wear OS 앱 디버깅 가이드를 참고하세요. adb는 일반적으로 USB를 통해 기기와 통신하지만, Wi-Fi를 통해 adb를 사용할 수도 있습니다. Android 10 이하를 실행하는 기기를 연결하려면 아래 설명처럼 USB를 통해 실행해야 하는 몇 가지 초기 단계가 있습니다.
이제 준비가 끝났습니다! adb 연결이 아예 끊어진 경우:
기기 쿼리adb 명령어를 실행하기 전에 어떤 기기 인스턴스가 adb 서버에 연결되어 있는지를 알면 도움이 됩니다. adb devices -l 이에 응답하여 adb는 각 기기의 상태 정보를 출력합니다.
다음 예에서는 $ adb devices List of devices attached emulator-5556 device product:sdk_google_phone_x86_64 model:Android_SDK_built_for_x86_64 device:generic_x86_64 emulator-5554 device product:sdk_google_phone_x86 model:Android_SDK_built_for_x86 device:generic_x86 0a388e93 device usb:1-1 product:razor model:Nexus_7 device:flo 에뮬레이터가 나열되지 않음
이 상황을 피하는 한 가지 방법은 에뮬레이터가 자체 포트를 선택하도록 하고 16개가 넘는 에뮬레이터를 동시에 실행하지 않는 것입니다. 또 다른 방법은 다음 예와 같이 예 1: 다음 명령어 시퀀스에서는 adb 서버를 중지하고 다음 명령어를 표시된 순서대로 입력합니다. avd 이름에는 시스템에서 유효한 avd 이름을 입력합니다. avd 이름 목록을 가져오려면 $ adb kill-server $ emulator -avd Nexus_6_API_25 -port 5555 $ adb devices List of devices attached * daemon not running. starting it now on port 5037 * * daemon started successfully * 예 2: 다음 명령어
시퀀스에서는 adb 서버가 먼저 시작되었으므로
$ adb kill-server $ emulator -avd Nexus_6_API_25 -port 5557 $ adb start-server $ adb devices List of devices attached emulator-5557 device 에뮬레이터 명령줄 옵션에 관한 자세한 내용은 명령줄 매개변수 사용을 참고하세요. 특정 기기로 명령어 전송여러 기기가 실행 중인 경우 adb 명령어를 실행할 때 대상 기기를 지정해야 합니다. 타겟을 지정하려면 다음 예에서는 연결된 기기 목록을 가져오고 기기 중 하나의 일련번호를 사용하여 그 기기에 $ adb devices List of devices attached emulator-5554 device emulator-5555 device $ adb -s emulator-5555 install helloWorld.apk 참고: 사용 가능한 여러 기기가 있을 때 대상 기기를 지정하지 않고 명령어를 실행하면 adb에서 오류가 발생합니다. 사용 가능한 여러 기기가 있지만 에뮬레이터가 하나뿐인 경우에는 앱 설치adb를 사용하여 에뮬레이터 또는 연결된 기기에 adb install path_to_apk 테스트 APK를 설치하는 경우에는 에뮬레이터/기기 인스턴스에 설치할 수 있는 APK 파일을 만드는 방법에 관한 자세한 내용은 앱 빌드 및 실행을 참고하세요. Android 스튜디오를 사용 중인 경우에는 에뮬레이터/기기에 앱을 설치하기 위해 adb를 직접 사용할 필요가 없습니다. Android 스튜디오가 앱의 패키징과 설치를 자동으로 처리해 줍니다. 포트 전달 설정 adb forward tcp:6100 tcp:7100 다음 예제는 호스트 포트 6100에서 local:logd로의 전달을 설정합니다. adb forward tcp:6100 local:logd 기기에/기기에서 파일 복사 기기에서 파일이나 디렉터리 및 하위 디렉터리를 복사하려면 다음을 실행하세요. adb pull remote local 기기에 파일이나 디렉터리 및 하위 디렉터리를 복사하려면 다음을 실행하세요. adb push local remote
adb push foo.txt /sdcard/foo.txt adb 서버 중지경우에 따라 문제 해결을 위해 adb 서버 프로세스를 종료했다가 다시 시작해야 할 수 있습니다(예: adb가 명령어에 응답하지 않는 경우). adb 서버를 중지하려면 adb 명령어 실행개발 머신의 명령줄 또는 스크립트에서 adb 명령어를 실행할 수 있습니다. 사용법: adb [-d | -e | -s serial_number] command 실행 중인 에뮬레이터가 하나뿐이거나 기기가 하나만 연결된 경우 기본적으로 adb 명령어는 연결된 기기로 전송됩니다. 여러 에뮬레이터가 실행 중이거나 여러 기기가 연결되어 있다면 다음 명령어를 사용하여 지원되는 모든 adb 명령어의 상세 목록을 확인할 수 있습니다. adb --help 셸 명령어 실행
adb [-d |-e | -s serial_number] shell shell_command 기기에서 양방향 셸을 시작하려면 adb [-d | -e | -s serial_number] shell 양방향 셸을 종료하려면 Ctrl+D를 누르거나 참고: Android 플랫폼 도구 23 이상에서는 adb가 Android는 일반적인 Unix 명령줄 도구를 대부분 제공합니다. 사용 가능한 도구 목록을 보려면 다음 명령어를 사용하세요. adb shell ls /system/bin
시스템 로그를 모니터링하는 데 유용한 Logcat 명령줄 도구도 참고하세요. 활동 관리자 호출(am)adb 셸 내에서 활동 관리자( am command 또한 원격 셸에 들어가지 않고 adb에서 직접 활동 관리자 명령어를 실행할 수도 있습니다. 예: adb shell am start -a android.intent.action.VIEW 표 2. 사용 가능한 activity manager 명령어
인텐트 인수의 사양
모두 표시 -a action 인텐트 작업을 지정합니다(예: android.intent.action.VIEW ). 이것은 한 번만 선언할 수 있습니다. -d data_uri 인텐트 데이터 URI를 지정합니다(예: content://contacts/people/1 ). 이것은 한 번만 선언할 수 있습니다. -t mime_type 인텐트 MIME 유형을 지정합니다(예: image/png ). 이것은 한 번만 선언할 수 있습니다. -c category 인텐트 카테고리를 지정합니다(예: android.intent.category.APP_CONTACTS ).-n component 패키지
이름 접두사로 구성요소 이름을 지정하여 명시적 인텐트를 만듭니다(예: com.example.app/.ExampleActivity ).-f flags setFlags() 에서 지원하는 대로 인텐트에 플래그를 추가합니다.--esn extra_key null extra를 추가합니다. 이 옵션은 URI 인텐트에서는 지원되지 않습니다. -e | --es extra_key extra_string_value 문자열 데이터를 키-값 쌍으로 추가합니다.--ez extra_key extra_boolean_value 부울 데이터를 키-값 쌍으로 추가합니다.--ei extra_key extra_int_value 정수 데이터를 키-값 쌍으로 추가합니다.--el extra_key extra_long_value long 데이터를 키-값 쌍으로 추가합니다.--ef extra_key extra_float_value 부동 소수점 수 데이터를 키-값 쌍으로 추가합니다.--eu extra_key extra_uri_value URI 데이터를 키-값 쌍으로 추가합니다.--ecn extra_key extra_component_name_value
구성요소 이름을 추가합니다. 이 이름은 ComponentName 객체로 변환되어 전달됩니다.--eia extra_key extra_int_value[,extra_int_value...] 정수 배열을 추가합니다.--ela extra_key extra_long_value[,extra_long_value...] long 배열을 추가합니다.--efa extra_key extra_float_value[,extra_float_value...] 부동 소수점 수 배열을 추가합니다.--grant-read-uri-permission FLAG_GRANT_READ_URI_PERMISSION 플래그를 포함합니다.--grant-write-uri-permission FLAG_GRANT_WRITE_URI_PERMISSION 플래그를 포함합니다.--debug-log-resolution FLAG_DEBUG_LOG_RESOLUTION 플래그를 포함합니다.--exclude-stopped-packages FLAG_EXCLUDE_STOPPED_PACKAGES 플래그를 포함합니다.--include-stopped-packages FLAG_INCLUDE_STOPPED_PACKAGES 플래그를 포함합니다.--activity-brought-to-front FLAG_ACTIVITY_BROUGHT_TO_FRONT 플래그를 포함합니다.--activity-clear-top FLAG_ACTIVITY_CLEAR_TOP 플래그를
포함합니다.--activity-clear-when-task-reset FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET 플래그를 포함합니다.--activity-exclude-from-recents FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS 플래그를 포함합니다.--activity-launched-from-history FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY 플래그를 포함합니다.--activity-multiple-task FLAG_ACTIVITY_MULTIPLE_TASK 플래그를 포함합니다.--activity-no-animation FLAG_ACTIVITY_NO_ANIMATION 플래그를 포함합니다.--activity-no-history FLAG_ACTIVITY_NO_HISTORY 플래그를 포함합니다.--activity-no-user-action FLAG_ACTIVITY_NO_USER_ACTION 플래그를 포함합니다.--activity-previous-is-top FLAG_ACTIVITY_PREVIOUS_IS_TOP 플래그를 포함합니다.--activity-reorder-to-front FLAG_ACTIVITY_REORDER_TO_FRONT 플래그를 포함합니다.--activity-reset-task-if-needed FLAG_ACTIVITY_RESET_TASK_IF_NEEDED 플래그를 포함합니다.--activity-single-top FLAG_ACTIVITY_SINGLE_TOP
플래그를 포함합니다.--activity-clear-task FLAG_ACTIVITY_CLEAR_TASK 플래그를 포함합니다.--activity-task-on-home FLAG_ACTIVITY_TASK_ON_HOME 플래그를 포함합니다.--receiver-registered-only FLAG_RECEIVER_REGISTERED_ONLY 플래그를 포함합니다.--receiver-replace-pending FLAG_RECEIVER_REPLACE_PENDING 플래그를 포함합니다.--selector -d 및 -t 옵션을 사용하여 인텐트 데이터 및 유형을 설정해야 합니다.URI component package 위 옵션 중 하나로 자격이 안 되는 경우 URI, 패키지 이름 및 구성요소 이름을 직접 지정할 수 있습니다. 자격이 없는 인수의 경우 도구는 다음과 같이 가정합니다. ':'(콜론)이 포함된 인수는 URI라고 가정하고, '/'(슬래시)가 포함된 인수는 구성요소 이름이라고 가정하며, 그 외의 인수는 패키지 이름이라고 가정합니다.
패키지 관리자 호출(pm)adb 셸 내에서 패키지 관리자( pm command 또한 원격 셸에 들어가지 않고 adb에서 직접 패키지 관리자 명령어를 실행할 수도 있습니다. 예: adb shell pm uninstall 표 3. 사용 가능한 package manager 명령어
기기 정책 관리자 호출(dpm)기기 관리(또는 기타 엔터프라이즈) 앱의 개발 및 테스트에 도움이 필요하면 기기 정책 관리자( dpm command 또한 원격 셸에 들어가지 않고 adb에서 직접 기기 정책 관리자 명령어를 실행할 수도 있습니다. adb shell dpm command 표 4. 사용 가능한 기기 정책 관리자 명령어
스크린샷 찍기
screencap filename
adb shell screencap /sdcard/screen.png 다음은 스크린샷 세션의 예이며 adb 셸을 사용하여 스크린샷을 캡처하고 $ adb shell shell@ $ screencap /sdcard/screen.png shell@ $ exit $ adb pull /sdcard/screen.png 동영상 녹화
셸에서 다음 구문을 사용합니다. screenrecord [options] filename
adb shell screenrecord /sdcard/demo.mp4 Control+C(Mac의 경우 Command+C)를 눌러 화면 녹화를 중지합니다. 중지하지 않으면 녹화가 3분 또는 기기 화면 녹화를 시작하려면 $ adb shell shell@ $ screenrecord --verbose /sdcard/demo.mp4 (press Control + C to stop) shell@ $ exit $ adb pull /sdcard/demo.mp4
표 5.
앱의 ART 프로필 읽기Android 7.0(API 수준 24)부터 Android 런타임(ART)은 설치된 앱의 실행 프로필을 수집하며 이 프로필을 사용하여 앱 성능을 최적화합니다. 수집된 프로필을 검사하면 앱 시작 중에 어떤 메서드가 자주 실행되고 어떤 클래스가 사용되는지를 파악할 수 있습니다. 텍스트 형태의 프로필 정보를 생성하려면 다음 명령어를 사용합니다. adb shell cmd package dump-profiles package 생성된 파일을 검색하려면 다음 명령어를 사용합니다. adb pull /data/misc/profman/package.txt 테스트 기기 재설정 여러 테스트 기기에서 앱을 테스트하는 경우 사용자 데이터를 삭제하고 테스트 환경을 재설정하는 등 테스트 사이에 기기를 재설정하는 것이 유용할 수 있습니다. 아래와 같이
adb shell cmd testharness enable 또한 더 쉽고 안전하게 앱을 계속 테스트할 수 있도록
앱에서 sqlite
$ adb -s emulator-5554 shell $ sqlite3 /data/data/com.example.app/databases/rssitems.db SQLite version 3.3.12 Enter ".help" for instructions 자세한 내용은 SQLite3 명령줄 문서를 참조하세요. |