Android
ADB (Android Debug Bridge)
수색…
소개
ADB (Android Debug Bridge)는 에뮬레이터 인스턴스 또는 연결된 Android 장치와 통신하는 데 사용되는 명령 줄 도구입니다.
이 주제의 상당 부분이 adb 쉘로 분리되었습니다.
비고
adb 쉘로 이동 된 예제 목록 :
연결된 장치의 자세한 목록 인쇄
adb
연결된 모든 장치의 자세한 목록을 얻으려면 터미널에 다음 명령을 작성하십시오.
adb devices -l
예제 출력
List of devices attached
ZX1G425DC6 device usb:336592896X product:shamu model:Nexus_6 device:shamu
013e4e127e59a868 device usb:337641472X product:bullhead model:Nexus_5X device:bullhead
ZX1D229KCN device usb:335592811X product:titan_retde model:XT1068 device:titan_umtsds
A50PL device usb:331592812X
- 첫 번째 열은 장치의 일련 번호입니다.
emulator-
시작하면이 장치는 에뮬레이터입니다. -
usb:
USB 하위 시스템에있는 장치의 경로입니다. -
product:
장치의 제품 코드. 이것은 매우 제조업체A50PL
위의 Archos 장치A50PL
에서 볼 수 있듯이 비워 둘 수 있습니다. -
model:
장치 모델.product
과 마찬가지로 비어있을 수 있습니다. -
device:
장치 코드. 이는 제조업체마다 매우 다르며 비어있을 수 있습니다.
장치 정보 읽기
터미널에 다음 명령을 작성하십시오.
adb shell getprop
키 / 값 쌍 형식으로 사용 가능한 모든 정보가 인쇄됩니다.
특정 키의 이름을 명령에 추가하여 특정 정보를 읽을 수 있습니다. 예 :
adb shell getprop ro.product.model
다음은 흥미로운 정보를 제공합니다.
-
ro.product.model
: 기기의 모델 이름 (예 : Nexus 6P) -
ro.build.version.sdk
: 기기의 API 레벨 (예 : 23) -
ro.product.brand
: 장치 브랜드 (예 : 삼성)
완전한 예제 출력
[dalvik.vm.dex2oat-Xms]: [64m]
[dalvik.vm.dex2oat-Xmx]: [512m]
[dalvik.vm.heapsize]: [384m]
[dalvik.vm.image-dex2oat-Xms]: [64m]
[dalvik.vm.image-dex2oat-Xmx]: [64m]
[dalvik.vm.isa.x86.variant]: [dalvik.vm.isa.x86.features=default]
[dalvik.vm.isa.x86_64.features]: [default]
[dalvik.vm.isa.x86_64.variant]: [x86_64]
[dalvik.vm.lockprof.threshold]: [500]
[dalvik.vm.stack-trace-file]: [/data/anr/traces.txt]
[debug.atrace.tags.enableflags]: [0]
[debug.force_rtl]: [0]
[dev.bootcomplete]: [1]
[gsm.current.phone-type]: [1]
[gsm.defaultpdpcontext.active]: [true]
[gsm.network.type]: [UMTS]
[gsm.nitz.time]: [1469106902492]
[gsm.operator.alpha]: [Android]
[gsm.operator.iso-country]: [us]
[gsm.operator.isroaming]: [false]
[gsm.operator.numeric]: [310260]
[gsm.sim.operator.alpha]: [Android]
[gsm.sim.operator.iso-country]: [us]
[gsm.sim.operator.numeric]: [310260]
[gsm.sim.state]: [READY]
[gsm.version.ril-impl]: [android reference-ril 1.0]
[init.svc.adbd]: [running]
[init.svc.bootanim]: [stopped]
[init.svc.console]: [running]
[init.svc.debuggerd]: [running]
[init.svc.debuggerd64]: [running]
[init.svc.drm]: [running]
[init.svc.fingerprintd]: [running]
[init.svc.gatekeeperd]: [running]
[init.svc.goldfish-logcat]: [stopped]
[init.svc.goldfish-setup]: [stopped]
[init.svc.healthd]: [running]
[init.svc.installd]: [running]
[init.svc.keystore]: [running]
[init.svc.lmkd]: [running]
[init.svc.logd]: [running]
[init.svc.logd-reinit]: [stopped]
[init.svc.media]: [running]
[init.svc.netd]: [running]
[init.svc.perfprofd]: [running]
[init.svc.qemu-props]: [stopped]
[init.svc.ril-daemon]: [running]
[init.svc.servicemanager]: [running]
[init.svc.surfaceflinger]: [running]
[init.svc.ueventd]: [running]
[init.svc.vold]: [running]
[init.svc.zygote]: [running]
[init.svc.zygote_secondary]: [running]
[net.bt.name]: [Android]
[net.change]: [net.dns2]
[net.dns1]: [10.0.2.3]
[net.dns2]: [10.0.2.4]
[net.eth0.dns1]: [10.0.2.3]
[net.eth0.dns2]: [10.0.2.4]
[net.eth0.gw]: [10.0.2.2]
[net.gprs.local-ip]: [10.0.2.15]
[net.hostname]: [android-5e1af924d72dc578]
[net.qtaguid_enabled]: [1]
[net.tcp.default_init_rwnd]: [60]
[persist.sys.dalvik.vm.lib.2]: [libart.so]
[persist.sys.profiler_ms]: [0]
[persist.sys.timezone]: [Europe/Vienna]
[persist.sys.usb.config]: [adb]
[qemu.gles]: [1]
[qemu.hw.mainkeys]: [0]
[qemu.sf.fake_camera]: [none]
[qemu.sf.lcd_density]: [560]
[rild.libargs]: [-d /dev/ttyS0]
[rild.libpath]: [/system/lib/libreference-ril.so]
[ro.allow.mock.location]: [0]
[ro.baseband]: [unknown]
[ro.board.platform]: []
[ro.boot.hardware]: [ranchu]
[ro.bootimage.build.date]: [Thu Jul 7 15:56:30 UTC 2016]
[ro.bootimage.build.date.utc]: [1467906990]
[ro.bootimage.build.fingerprint]: [Android/sdk_google_phone_x86_64/generic_x86_64:6.0/MASTER/3038907:userdebug/test-keys]
[ro.bootloader]: [unknown]
[ro.bootmode]: [unknown]
[ro.build.characteristics]: [emulator]
[ro.build.date]: [Thu Jul 7 15:55:30 UTC 2016]
[ro.build.date.utc]: [1467906930]
[ro.build.description]: [sdk_google_phone_x86_64-userdebug 6.0 MASTER 3038907 test-keys]
[ro.build.display.id]: [sdk_google_phone_x86_64-userdebug 6.0 MASTER 3038907 test-keys]
[ro.build.fingerprint]: [Android/sdk_google_phone_x86_64/generic_x86_64:6.0/MASTER/3038907:userdebug/test-keys]
[ro.build.flavor]: [sdk_google_phone_x86_64-userdebug]
[ro.build.host]: [vpak15.mtv.corp.google.com]
[ro.build.id]: [MASTER]
[ro.build.product]: [generic_x86_64]
[ro.build.tags]: [test-keys]
[ro.build.type]: [userdebug]
[ro.build.user]: [android-build]
[ro.build.version.all_codenames]: [REL]
[ro.build.version.base_os]: []
[ro.build.version.codename]: [REL]
[ro.build.version.incremental]: [3038907]
[ro.build.version.preview_sdk]: [0]
[ro.build.version.release]: [6.0]
[ro.build.version.sdk]: [23]
[ro.build.version.security_patch]: [2015-10-01]
[ro.com.google.locationfeatures]: [1]
[ro.config.alarm_alert]: [Alarm_Classic.ogg]
[ro.config.nocheckin]: [yes]
[ro.config.notification_sound]: [OnTheHunt.ogg]
[ro.crypto.state]: [unencrypted]
[ro.dalvik.vm.native.bridge]: [0]
[ro.debuggable]: [1]
[ro.hardware]: [ranchu]
[ro.hardware.audio.primary]: [goldfish]
[ro.kernel.android.checkjni]: [1]
[ro.kernel.android.qemud]: [1]
[ro.kernel.androidboot.hardware]: [ranchu]
[ro.kernel.clocksource]: [pit]
[ro.kernel.console]: [0]
[ro.kernel.ndns]: [2]
[ro.kernel.qemu]: [1]
[ro.kernel.qemu.gles]: [1]
[ro.opengles.version]: [131072]
[ro.product.board]: []
[ro.product.brand]: [Android]
[ro.product.cpu.abi]: [x86_64]
[ro.product.cpu.abilist]: [x86_64,x86]
[ro.product.cpu.abilist32]: [x86]
[ro.product.cpu.abilist64]: [x86_64]
[ro.product.device]: [generic_x86_64]
[ro.product.locale]: [en-US]
[ro.product.manufacturer]: [unknown]
[ro.product.model]: [Android SDK built for x86_64]
[ro.product.name]: [sdk_google_phone_x86_64]
[ro.radio.use-ppp]: [no]
[ro.revision]: [0]
[ro.runtime.firstboot]: [1469106908722]
[ro.secure]: [1]
[ro.serialno]: []
[ro.wifi.channels]: []
[ro.zygote]: [zygote64_32]
[selinux.reload_policy]: [1]
[service.bootanim.exit]: [1]
[status.battery.level]: [5]
[status.battery.level_raw]: [50]
[status.battery.level_scale]: [9]
[status.battery.state]: [Slow]
[sys.boot_completed]: [1]
[sys.sysctl.extra_free_kbytes]: [43200]
[sys.sysctl.tcp_def_init_rwnd]: [60]
[sys.usb.config]: [adb]
[sys.usb.state]: [adb]
[vold.has_adoptable]: [1]
[wlan.driver.status]: [unloaded]
[xmpp.auto-presence]: [true]
WiFi를 통해 ADB를 장치에 연결하십시오.
표준 ADB 구성에는 물리적 장치에 대한 USB 연결이 필요합니다.
원하는 경우 TCP / IP 모드로 전환하고 Wi-Fi를 통해 ADB에 연결할 수 있습니다.
루팅되지 않은 기기
동일한 네트워크에 가입하십시오.
- 장치와 컴퓨터가 동일한 네트워크에 있는지 확인하십시오.
USB 케이블을 사용하여 장치를 호스트 컴퓨터에 연결하십시오.
네트워크를 통해
adb
를 장치에 연결하십시오.장치가 USB를 통해
adb
연결되어있는 동안 다음 명령을 실행하여 포트에서 TCP / IP 연결을 수신합니다 (기본값 5555).-
adb tcpip <port>
(TCP / IP 모드로 전환)을 입력하십시오. - 대상 장치에서 USB 케이블을 분리하십시오.
-
adb connect <ip address>:<port>
(포트는 선택 사항이며 기본값은 5555).
예 :
adb tcpip 5555 adb connect 192.168.0.101:5555
기기의 IP를 모를 경우 다음을 수행 할 수 있습니다.
- 장치의 WiFi 설정에서 IP를 확인하십시오.
- ADB를 사용하여 IP를 발견하십시오 (USB를 통해).
- USB를 통해 장치를 컴퓨터에 연결하십시오.
- 명령 줄에서
adb shell ifconfig
입력하고 장치의 IP 주소를 복사하십시오.
USB 를 통해 디버깅으로 되돌리려면 다음 명령을 사용하십시오 :
adb usb
Android Studio에 플러그인을 설치하여 Wi-Fi를 통해 ADB에 연결할 수도 있습니다. 그렇게하려면 설정> 플러그인 및 리포지토리로 이동하여 ADB WiFi를 검색하여 설치하고 Android Studio를 다시 엽니 다. 다음 그림과 같이 도구 모음에 새 아이콘이 표시됩니다. USB를 통해 장치를 호스트 컴퓨터에 연결하고이 AndroidWiFiADB 아이콘을 클릭하십시오. 장치가 연결되어 있는지 여부를 나타내는 메시지가 표시됩니다. 연결되면 USB 연결을 해제 할 수 있습니다.
-
루팅 된 장치
참고 : 루팅 된 일부 기기는 Play 스토어의 ADB WiFi 앱을 사용하여 간편하게 사용할 수 있습니다. 또한 특정 장치 (특히 CyanogenMod ROM이있는 장치)의 경우이 옵션은 설정 중 개발자 옵션에 있습니다. 이를 사용 가능하게하면 단순히 adb connect <ip address>:<port>
를 실행하여 adb
에 연결하는 데 필요한 IP 주소와 포트 번호를 얻을 수 있습니다.
루팅 된 장치가 있지만 USB 케이블에 액세스 할 수없는 경우
이 프로세스는 다음 답변에 자세히 설명되어 있습니다. http://stackoverflow.com/questions/2604727/how-can-i-connect-to-android-with-adb-over-tcp/3623727#3623727 가장 중요한 명령 아래에 나와 있습니다.
장치에서 터미널을 열고 다음을 입력하십시오.
su
setprop service.adb.tcp.port <a tcp port number>
stop adbd
start adbd
예 :
setprop service.adb.tcp.port 5555
그리고 컴퓨터에서 :
adb connect <ip address>:<a tcp port number>
예 :
adb connect 192.168.1.2:5555
사용 중지하려면 다음 단계를 따르세요.
setprop service.adb.tcp.port -1
stop adbd
start adbd
시간 초과 방지
기본적으로 adb
는 5000ms 후에 시간 초과됩니다. 이는 느린 WiFi 또는 대용량 APK와 같은 일부 경우에 발생할 수 있습니다.
Gradle 구성을 간단히 변경하면 트릭을 수행 할 수 있습니다.
android {
adbOptions {
timeOutInMs 10 * 1000
}
}
장치에서 파일 가져 오기 (푸시)
다음 명령을 실행하여 장치에서 파일을 가져올 수 있습니다 (다운로드).
adb pull <remote> <local>
예 :
adb pull /sdcard/ ~/
컴퓨터에서 장치로 파일을 푸시 (업로드) 할 수도 있습니다.
adb push <local> <remote>
예 :
adb push ~/image.jpg /sdcard/
장치에서 데이터베이스를 검색하는 예제
sudo adb -d shell "run-as com.example.name cat /data/da/com.example.name /databases/DATABASE_NAME > /sdcard/file
기기 재부팅
다음 명령을 실행하여 장치를 재부팅 할 수 있습니다.
adb reboot
부트 로더로 재부팅하려면 다음 명령을 수행하십시오.
adb reboot bootloader
복구 모드로 재부팅 :
adb reboot recovery
기기가 먼저 종료되지 않습니다.
Wi-Fi 사용 / 사용 중지
켜다:
adb shell svc wifi enable
끄다:
adb shell svc wifi disable
사용 가능한 기기보기
명령:
adb devices
결과 예 :
List of devices attached
emulator-5554 device
PhoneRT45Fr54 offline
123.454.67.45 no device
첫 번째 열 - 기기 일련 번호
두 번째 열 - 연결 상태
IP로 장치 연결
Android 기기의 단말기 에서 다음 명령을 입력하십시오.
su
setprop service.adb.tcp.port 5555
stop adbd
start adbd
그런 다음 CMD 와 ADB 를 사용하여 다음 명령을 사용하여 연결할 수 있습니다.
adb connect 192.168.0.101.5555
그리고 그것을 비활성화하고 ADB를 USB로 수신 대기 상태로 되돌릴 수 있습니다.
setprop service.adb.tcp.port -1
stop adbd
start adbd
컴퓨터에서 USB 액세스가 이미있는 경우 (루트가 필요 없음)
이미 USB를 사용하고 있다면 Wi-Fi를 사용하는 것으로 전환하는 것이 더 쉽습니다. USB를 통해 연결된 장치가있는 컴퓨터의 명령 줄에서 다음 명령을 실행하십시오.
adb tcpip 5555
adb connect 192.168.0.101:5555
192.168.0.101을 장치 IP로 바꾸십시오.
adb 시작 / 중지
ADB 시작 :
adb kill-server
ADB 중지 :
adb start-server
logcat보기
logcat
을 adb 명령으로 실행하거나 에뮬레이터 또는 연결된 장치의 쉘 프롬프트에서 직접 실행할 수 있습니다. adb
사용하여 로그 출력을 보려면 SDK 플랫폼 도구 / 디렉토리로 이동하여 다음을 실행하십시오.
$ adb logcat
또는 장치에 쉘 연결을 생성 한 다음 다음을 실행할 수 있습니다.
$ adb shell
$ logcat
유용한 명령은 다음과 같습니다.
adb logcat -v threadtime
그러면 긴 메시지 형식으로 메시지를 발행하는 스레드의 날짜, 호출 시간, 우선 순위, 태그 및 PID와 TID가 표시됩니다.
필터링
Logcat 로그는 로그 레벨이라고 불립니다.
V - 자세한 정보, D - 디버그, I - 정보, W - 경고, E - 오류, F - 치명적, S - 침묵
logcat을 로그 수준으로 필터링 할 수도 있습니다. 예를 들어 디버그 수준 만 출력하려면 다음과 같이하십시오.
adb logcat *:D
Logcat은 패키지 이름으로 필터링 할 수 있지만 로그 레벨 필터와 결합 할 수 있습니다.
adb logcat <package-name>:<log level>
또한 grep을 사용하여 로그를 필터링 할 수도 있습니다 (logcat 출력 필터링에 대한 자세한 내용은 여기 ).
adb logcat | grep <some text>
Windows에서는 findstr을 사용하여 filter를 사용할 수 있습니다. 예를 들면 다음과 같습니다.
adb logcat | findstr <some text>
대체 로그 버퍼 [main | events | radio]를 보려면 logcat
을 -b
옵션과 함께 실행하십시오.
adb logcat -b radio
파일에 출력 저장 :
adb logcat > logcat.txt
파일을 보면서 출력을 저장하십시오.
adb logcat | tee logcat.txt
로그 정리 :
adb logcat -c
다중 장치 설정에서 특정 장치로 직접 ADB 명령
1. 일련 번호로 기기 타겟팅
장치 이름 앞에 -s
옵션을 사용하여 adb
명령을 실행할 장치를 선택하십시오. -s
옵션은 명령어 앞에 첫 줄에 있어야합니다.
adb -s <device> <command>
예:
adb devices
List of devices attached
emulator-5554 device
02157df2d1faeb33 device
adb -s emulator-5554 shell
예 2 :
adb devices -l
List of devices attached
06157df65c6b2633 device usb:1-3 product:zerofltexx model:SM_G920F device:zeroflte
LC62TB413962 device usb:1-5 product:a50mgp_dug_htc_emea model:HTC_Desire_820G_dual_sim device:htc_a50mgp_dug
adb -s usb:1-3 shell
2. 하나의 장치 유형 만 연결되어있는 경우 장치 대상 지정
-e를 사용하여 실행중인 에뮬레이터 만 대상으로 지정할 수 있습니다.
adb -e <command>
또는 -d를 사용하여 연결된 USB 장치 만 대상으로 지정할 수 있습니다.
adb -d <command>
장치 디스플레이에서 스크린 샷과 비디오 캡처 (kitkat 전용)
스크린 샷 : 옵션 1 (순수 adb)
shell
adb 명령을 사용하면 장치의 내장 쉘을 사용하여 명령을 실행할 수 있습니다. screencap
쉘 명령은 현재 장치에 표시된 내용을 캡처하여 주어진 이미지 파일에 저장합니다 (예 : /sdcard/screen.png
.
adb shell screencap /sdcard/screen.png
그런 다음 pull 명령 을 사용 하여 장치의 파일을 컴퓨터의 현재 디렉토리로 다운로드 할 수 있습니다.
adb pull /sdcard/screen.png
스크린 샷 : 옵션 2 (빠름)
다음 한 줄짜리 실행 :
(마쉬 멜로우 이전) :
adb shell screencap -p | perl -pe 's/\x0D\x0A/\x0A/g' > screen.png
(Nougat 이상) :
adb shell screencap -p > screen.png
-p
플래그는 screencap
명령의 출력을 stdout으로 재 지정합니다. 이것은 Perl 표현식으로 Marshmallow 및 그 이전 버전에서 일부 최종 행간 문제를 정리합니다. 스트림은 현재 디렉토리 내의 screen.png
파일에 기록됩니다. 자세한 내용은 이 문서 와이 문서 를 참조하십시오.
비디오
이는 KitKat과 ADB를 통해서만 가능합니다. 이 작업은 Kitkat 아래에서 수행하지 마십시오. 장치 화면 녹화를 시작하려면 다음 명령을 실행하십시오.
adb shell screenrecord /sdcard/example.mp4
,이 명령은 기본 설정을 사용하여 장치 화면을 기록하고 장치의 /sdcard/example.mp4
파일에 결과 비디오를 저장합니다.
녹화가 끝나면 명령 프롬프트 창에서 Ctrl + C (Linux의 경우 z)를 눌러 화면 녹화를 중지하십시오. 그런 다음 지정한 위치에서 화면 녹화 파일을 찾을 수 있습니다. 화면 녹화는 컴퓨터가 아닌 기기의 내부 저장 공간에 저장됩니다.
기본 설정은 장치의 표준 화면 해상도를 사용하고 4Mbps의 비트 전송률로 비디오를 인코딩하고 최대 화면 녹화 시간을 180 초로 설정하는 것입니다. 사용할 수있는 명령 줄 옵션에 대한 자세한 내용을 보려면 다음 명령을 실행하십시오.
adb shell screenrecord –help
, 이것은 장치를 루팅하지 않고 작동합니다. 희망이 도움이됩니다.
애플리케이션 데이터 지우기
adb
사용하여 특정 앱의 사용자 데이터를 삭제할 수 있습니다.
adb shell pm clear <package>
이것은 휴대 전화의 설정을 탐색하는 것과 동일하며 앱을 선택하고 데이터 지우기 버튼을 누릅니다.
-
pm
은 장치에서 패키지 관리자를 호출합니다. -
clear
는 패키지와 관련된 모든 데이터를 삭제합니다.
방송 송신 중
BroadcastReceiver
에 adb
로 BroadcastReceiver
캐스트를 보낼 수 있습니다.
이 예제에서 액션 com.test.app.ACTION
과 string extra를 번들 'foo'='bar'
브로드 캐스트로 전송합니다.
adb shell am broadcast -a action com.test.app.ACTION --es foo "bar"
문자열뿐만 아니라 지원되는 다른 모든 유형을 묶을 수 있습니다.
--ez - 부울
--ei - 정수
- 긴 - 긴
--ef - 플로트
--eu - uri
--eia - int 배열 ( ','로 단락 지어진)
--ela - 긴 배열 ( ','로 구분됨)
--efa - 부동 배열 ( ','로 구분)
--esa - 문자열 배열 ( ','로 구분됨)
특정 패키지 / 클래스에 인 텐트를 보내려면 -n
또는 -p
매개 변수를 사용할 수 있습니다.
패키지 전송 중 :
-p com.test.app
특정 구성 요소 ( com.test.app package
SomeReceiver
클래스)로 com.test.app package
:
-n com.test.app/.SomeReceiver
유용한 예 :
응용 프로그램 설치 및 실행
APK 파일을 설치하려면 다음 명령을 사용하십시오.
adb install path/to/apk/file.apk
앱이 존재하고 다시 설치하려는 경우
adb install -r path/to/apk/file.apk
응용 프로그램을 제거하려면 패키지를 지정해야합니다.
adb uninstall application.package.name
제공된 패키지 이름 (또는 앱의 특정 활동)으로 앱을 시작하려면 다음 명령을 사용하십시오.
adb shell am start -n adb shell am start <package>/<activity>
예를 들어 Waze를 시작하려면 다음과 같이하십시오.
adb shell am start -n adb shell am start com.waze/com.waze.FreeMapAppActivity
지원
adb backup
명령을 사용하여 디바이스를 백업 할 수 있습니다.
adb backup [-f <file>] [-apk|-noapk] [-obb|-noobb] [-shared|-noshared] [-all]
[-system|nosystem] [<packages...>]
-f <filename>
기본값 지정 : 현재 디렉토리에 backup.ab를 작성합니다.
-apk|noapk
백업을 활성화 / 비활성화합니다. 기본값 : -noapk
-obb|noobb
추가 파일의 백업을 활성화 / 비활성화합니다. 기본값 : -noobb
-shared|noshared
백업 장치의 공유 저장소 / SD 카드 내용 기본값 : -noshared
-all
백업 설치된 모든 apllications
-system|nosystem
은 시스템 응용 프로그램을 기본값으로 포함합니다 : -system
<packages>
백업 할 패키지 목록 (예 : com.example.android.myapp) ( -all
이 지정된 경우 필요 없음)
모든 것을 포함하여 전체 장치 백업의 경우
adb backup -apk -obb -shared -all -system -f fullbackup.ab
참고 : 전체 백업을 수행하는 데 시간이 오래 걸릴 수 있습니다.
백업을 복원하려면 다음을 사용하십시오.
adb restore backup.ab
Linux 시스템에 ADB 설치
배포판의 저장소를 사용하는 터미널이있는 Linux 시스템에 Android Debugging Bridge (ADB)를 설치하는 방법.
apt를 통해 우분투 / 데비안 시스템에 설치 :
sudo apt-get update
sudo apt-get install adb
yum을 통해 Fedora / CentOS 시스템에 설치 :
sudo yum check-update
sudo yum install android-tools
portage로 Gentoo 시스템에 설치 :
sudo emerge --ask dev-util/android-tools
zypper로 openSUSE 시스템에 설치 :
sudo zypper refresh
sudo zypper install android-tools
pacman을 사용하여 아치 시스템에 설치 :
sudo pacman -Syyu
sudo pacman -S android-tools
Android 6.0에서 사용자가 런타임 권한을 필요로하는 모든 권한 나열
adb shell pm list permissions -g -d
앱의 내부 데이터 (데이터 / 데이터 / ) 장치에
먼저 앱을 AndroidManifest.xml
백업 할 수 있는지 확인합니다. 예 : android:allowBackup
이 false
가 아닙니다.
백업 명령 :
adb -s <device_id> backup -noapk <sample.package.id>
dd 명령으로 타르를 작성하십시오.
dd if=backup.ab bs=1 skip=24 | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" > backup.tar
타르 추출 :
tar -xvf backup.tar
그러면 압축을 푼 내용을 볼 수 있습니다.
활동 스택보기
adb -s <serialNumber> shell dumpsys activity activities
watch
unix 명령과 함께 사용할 때 매우 유용합니다.
watch -n 5 "adb -s <serialNumber> shell dumpsys activity activities | sed -En -e '/Stack #/p' -e '/Running activities/,/Run #0/p'"
앱의 캐시 파일보기 및 가져 오기
자신의 디버깅 가능한 apk 파일을 나열하는 데이 명령을 사용할 수 있습니다.
adb shell run-as <sample.package.id> ls /data/data/sample.package.id/cache
그리고 캐시에서 가져 오기위한이 스크립트는 내용을 sdcard에 먼저 복사 한 다음 끝에 가져 와서 제거합니다.
#!/bin/sh
adb shell "run-as <sample.package.id> cat '/data/data/<sample.package.id>/$1' > '/sdcard/$1'"
adb pull "/sdcard/$1"
adb shell "rm '/sdcard/$1'"
다음과 같이 캐시에서 파일을 가져올 수 있습니다.
./pull.sh cache/someCachedData.txt
ADB를 통해 데이터베이스 파일 가져 오기
sudo adb -d shell "run-as com.example.name cat /data/da/com.example.name /databases/STUDENT_DATABASE > /sdcard/file