ADB


ADB

ADB는 Android Debug Bridge의 약자로 안드로이드 OS에 Shell로 붙어 작업할 수 있도록 도와줍니다.

앞서 설치했던 Genymotion에서 Android 4.1.1을 실행합니다.

Android_ip

실행하면 상단의 오른쪽에 해당 안드로이드의 IP 주소가 나타나게 됩니다.

adb devices

터미널에서 adb devices를 입력합니다.

k3y6reak:~ k3y6reak$ adb devices
List of devices attached
192.168.56.101:5555	device

adb devices는 현재 실행되고 있는 안드로이드 기기의 목록을 출력해 줍니다. 여러개가 실행되고 있는 경우 IP가 여러개 출력됩니다.

adb shell

여기서 adb shell을 입력하면 해당 기기의 shell이 실행됩니다.

k3y6reak:~ k3y6reak$ adb shell
root@android:/ #

k3y6reak에서 root로 변한 것을 볼 수 있습니다. shell이 실행되면 root로 실행됩니다.

여러개의 안드로이드가 실행이 되고 있는 경우라면 adb -s [IP] shell을 입력하면 됩니다.

adb push

로컬에서 안드로이드 기기로 파일을 전송하고자 하는 경우 adb push를 사용합니다

k3y6reak:~ k3y6reak$ vim test.txt
k3y6reak:~ k3y6reak$ cat test.txt
k3y6reak test
k3y6reak:~ k3y6reak$ adb push test.txt /mnt/sdcard
test.txt: 1 file pushed. 0.0 MB/s (14 bytes in 0.002s)
k3y6reak:~ k3y6reak$ adb shell ls /mnt/sdcard
Alarms
Android
DCIM
Download
KakaoTalk
Movies
Music
Notifications
Pictures
Podcasts
Ringtones
test.txt
k3y6reak:~ k3y6reak$

adb pull

반대로 안드로이드 기기에서 로컬로 가져오고 싶은 경우 adb pull을 사용합니다.

k3y6reak:~ k3y6reak$ adb shell
root@android:/ # cd /mnt/sdcard
root@android:/mnt/sdcard # ls
Alarms
Android
DCIM
Download
KakaoTalk
Movies
Music
Notifications
Pictures
Podcasts
Ringtones
test.txt
root@android:/mnt/sdcard # mv test.txt test2.txt
root@android:/mnt/sdcard # exit
k3y6reak:~ k3y6reak$ adb pull /mnt/sdcard/test2.txt test2.txt
/mnt/sdcard/test2.txt: 1 file pulled. 0.0 MB/s (14 bytes in 0.001s)
k3y6reak:~ k3y6reak$ cat test2.txt
k3y6reak test

adb install

apk 파일을 설치하고 하는 경우 adb install을 사용합니다.

k3y6reak:Desktop k3y6reak$ adb install SoundMeter.apk
SoundMeter.apk: 1 file pushed. 17.5 MB/s (845724 bytes in 0.046s)
	pkg: /data/local/tmp/SoundMeter.apk
Success
rm failed for -f, No such file or directory

해당 안드로이드 기기에서 확인하면 설치가 완료된 것을 볼 수 있습니다.

adb uninstall

설치 된 apk 파일을 삭제하고자 하는 경우 adb uninstall을 사용합니다. 이때 삭제하고자 하는 패키지 이름을 넣어주어야 합니다.

root@android:/data/data # ls -al | grep "sound"
drwxr-x--x u0_a38   u0_a38            2017-10-30 11:18 com.android.soundrecorder
drwxr-x--x u0_a49   u0_a49            2017-11-06 07:51 me.daei.soundmeter
k3y6reak:Desktop k3y6reak$ adb uninstall me.daei.soundmeter
Success

마찬가지로 안드로이드 기기에서 확인하면 해당 apk가 삭제된 것을 볼 수 있습니다.

adb logcat

logcat은 안드로이드가 어떤 작업을 하는지 log을 출력해 줍니다.

adb logcat을 하면 모든 행위에 대해 log를 출력해주며 pid로 필터링하면 해당 pid에 대해서만 출력합니다.

root@android:/ # ps
USER     PID   PPID  VSIZE  RSS     WCHAN    PC         NAME
u0_a49    1348  165   509072 29960 ffffffff b75eb507 S me.daei.soundmeter
k3y6reak:Desktop k3y6reak$ adb logcat | grep -i 1348
I/ActivityManager(  326): Start proc me.daei.soundmeter for activity me.daei.soundmeter/.MainActivity: pid=1348 uid=10049 gids={1015, 3003, 1028}
W/dalvikvm( 1348): VFY: unable to find class referenced in signature (Landroid/view/SearchEvent;)
I/dalvikvm( 1348): Could not find method android.view.Window$Callback.onSearchRequested, referenced from method android.support.v7.view.n.onSearchRequested
W/dalvikvm( 1348): VFY: unable to resolve interface method 6404: Landroid/view/Window$Callback;.onSearchRequested (Landroid/view/SearchEvent;)Z
D/dalvikvm( 1348): VFY: replacing opcode 0x72 at 0x0002
I/dalvikvm( 1348): Could not find method android.view.Window$Callback.onWindowStartingActionMode, referenced from method android.support.v7.view.n.onWindowStartingActionMode
W/dalvikvm( 1348): VFY: unable to resolve interface method 6408: Landroid/view/Window$Callback;.onWindowStartingActionMode (Landroid/view/ActionMode$Callback;I)Landroid/view/ActionMode;
D/dalvikvm( 1348): VFY: replacing opcode 0x72 at 0x0002
I/dalvikvm( 1348): Could not find method android.view.ViewGroup.onRtlPropertiesChanged, referenced from method android.support.v7.widget.Toolbar.onRtlPropertiesChanged
W/dalvikvm( 1348): VFY: unable to resolve virtual method 6345: Landroid/view/ViewGroup;.onRtlPropertiesChanged (I)V
D/dalvikvm( 1348): VFY: replacing opcode 0x6f at 0x0007
I/dalvikvm( 1348): Could not find method android.content.res.Resources.getDrawable, referenced from method android.support.v7.widget.cn.getDrawable

(생략...)





© 2017. by k3y6reak

Powered by k3y6reak