文章目录
  1. 1. 如何查看命令
  2. 2. 设备连接相关命令
    1. 2.1. -a
    2. 2.2. -d
    3. 2.3. -e
    4. 2.4. -s (specific device)
    5. 2.5. -p (product name or path)
    6. 2.6. -H
    7. 2.7. -P
    8. 2.8. adb devices
    9. 2.9. adb connect (host)[:(port)]
    10. 2.10. adb disconnect [(host)[:(port)]]
  3. 3. 设备命令
    1. 3.1. adb push [-p] (local) (remote)
    2. 3.2. adb pull [-p] [-a] (remote) [(local)]
    3. 3.3. adb sync [ (directory) ]
    4. 3.4. adb shell
    5. 3.5. adb shell (command)
    6. 3.6. adb emu (command)
    7. 3.7. adb logcat [ (filter-spec) ]
    8. 3.8. adb forward —list
    9. 3.9. adb forward (local) (remote)
    10. 3.10. adb forward —no-rebind (local) (remote)
    11. 3.11. adb forward —remove (local)
    12. 3.12. adb forward —remove-all
    13. 3.13. adb reverse —list
    14. 3.14. adb reverse (remote) (local)
    15. 3.15. adb reverse —no-rebind (remote) (local)
    16. 3.16. adb reverse —remove (remote)
    17. 3.17. adb reverse —remove-all
    18. 3.18. adb jdwp
    19. 3.19. adb install [-lrtsdg] (file)
    20. 3.20. adb install-multiple [-lrtsdpg] (file…)
    21. 3.21. adb uninstall [-k] (package)
    22. 3.22. adb bugreport
    23. 3.23. adb backup …
    24. 3.24. adb restore (file)
    25. 3.25. adb disable-verity
    26. 3.26. adb enable-verity
    27. 3.27. adb keygen (file)
    28. 3.28. adb help
    29. 3.29. adb version
  4. 4. 脚本相关
    1. 4.1. adb wait-for[-(transport)]-(state)
    2. 4.2. adb start-server
    3. 4.3. adb kill-server
    4. 4.4. adb get-state
    5. 4.5. adb get-serialno
    6. 4.6. adb get-devpath
    7. 4.7. adb remount
    8. 4.8. adb reboot [bootloader|recovery]
    9. 4.9. adb reboot sideload
    10. 4.10. adb root
    11. 4.11. adb unroot
    12. 4.12. adb usb
    13. 4.13. adb tcpip (port)
  5. 5. 网络相关
    1. 5.1. adb ppp (tty) [parameters]
    2. 5.2. adb sync notes: adb sync [ (directory) ]
  6. 6. 环境变量
    1. 6.1. ADB_TRACE
    2. 6.2. ANDROID_SERIAL
    3. 6.3. ANDROID_LOG_TAGS
  7. 7. 分享与支持

来源:JiongBull’s Blog
微博:@JiongBull
GitHub:JiongBull

如何查看命令

1
2
D:\Code\Git>adb help
...

设备连接相关命令

-a

命令针对所有设备,需要和其他命令组合使用。

-d

命令针对真机,需要和其他命令组合使用。

-e

命令针对虚拟机,需要和其他命令组合使用。

-s (specific device)

命令针对指定设备,需要和其他命令组合使用。

-p (product name or path)

命令针对指定名称的产品或路径,需要和其他命令组合使用。

-H

命令针对指定名称的server,默认是localhost,需要和其他命令组合使用。

-P

命令针对指定端口的server,默认是5037,需要和其他命令组合使用。

adb devices

显示所有连接的设备,-l显示设备的全限定名。

  1. adb devices

    1
    2
    3
    4
    D:\Code\Git>adb devices
    List of devices attached
    192.168.46.101:5555 device
    192.168.46.102:5555 device
  2. adb devices -l

    1
    2
    3
    4
    D:\Code\Git>adb devices -l
    List of devices attached
    192.168.46.101:5555 device product:vbox86p model:Google_Nexus_5___4_4_4___API_19___1080x1920 device:vbox86p
    192.168.46.102:5555 device product:vbox86p model:Google_Nexus_6___5_0_0___API_21___1440x2560 device:vbox86p

adb connect (host)[:(port)]

通过TCP/IP连接设备,如果没有指定端口,则默认使用5555端口。

  1. adb connect 192.168.46.101

    1
    2
    D:\Code\Git>adb connect 192.168.46.101
    already connected to 192.168.46.101:5555
  2. adb connect 192.168.46.101:5555

    1
    2
    D:\Code\Git>adb connect 192.168.46.101:5555
    already connected to 192.168.46.101:5555

adb disconnect [(host)[:(port)]]

断开TCP/IP连接的设备,如果没有指定端口,则默认使用5555端口,如果没有指定任何参数会断开所有通过TCP/IP连接的设备。

  1. adb disconnect 192.168.46.101

    1
    D:\Code\Git>adb disconnect 192.168.46.101
  2. adb disconnect 192.168.46.101:5555

    1
    D:\Code\Git>adb disconnect 192.168.46.101:5555

设备命令

adb push [-p] (local) (remote)

把文件/文件夹拷贝到设备中,-p可以显示传输进度。

  1. adb push C:\Users\JiongBull\Desktop\logo.png /storage/sdcard0/

    1
    2
    D:\Code\Git>adb push C:\Users\JiongBull\Desktop\logo.png /storage/sdcard0/
    79 KB/s (6663 bytes in 0.081s)
  2. adb push -p C:\Users\JiongBull\Desktop\logo.png /storage/sdcard0/

    1
    2
    3
    D:\Code\Git>adb push -p C:\Users\JiongBull\Desktop\logo.png /storage/sdcard0/
    Transferring: 6663/6663 (100%)
    86 KB/s (6663 bytes in 0.075s)

adb pull [-p] [-a] (remote) [(local)]

从设备中拷贝文件/文件夹。

  • -p 显示传输进度
  • -a 拷贝文件的时间信息和模式
  1. adb pull /storage/sdcard0/logo.png D:\logo.png

    1
    2
    D:\Code\Git>adb pull /storage/sdcard0/logo.png D:\logo.png
    381 KB/s (6663 bytes in 0.017s)
  2. adb pull -p /storage/sdcard0/logo.png D:\logo.png

    1
    2
    3
    D:\Code\Git>adb pull -p /storage/sdcard0/logo.png D:\logo.png
    Transferring: 6663/6663 (100%)
    282 KB/s (6663 bytes in 0.023s)
  3. adb pull -a /storage/sdcard0/logo.png D:\logo.png

    1
    2
    D:\Code\Git>adb pull -a /storage/sdcard0/logo.png D:\logo.png
    418 KB/s (6663 bytes in 0.015s)

adb pull remote
adb pull local

adb sync [ (directory) ]

把Android设备上/system/data目录中与主机目录中不一致的内容同步到主机上。使用前需要设置主机目录地址的环境变量。

  1. adb sync(未设置环境变量)

    1
    2
    D:\Code\Git>adb sync
    adb: Product directory not specified; use -p or define ANDROID_PRODUCT_OUT
  2. set ANDROID_PRODUCT_OUT = (PATH)

    1
    D:\Code\Git>set ANDROID_PRODUCT_OUT = D:\Data\Android
  3. adb sync(已设置环境变量)

    1
    2
    3
    4
    D:\Code\Git>adb sync
    syncing /system...
    push: D:\Data\Android\system/app/WAPPushManager.apk -> /system/app/WAPPushManager.apk
    ...

adb sync system
adb sync data

adb shell

调用远程shell

1
2
D:\Code\Git>adb shell
root@vbox86p:/ #

adb shell (command)

调用远程shell命令。

1
2
D:\Code\Git>adb shell su
root@vbox86p:/ #

adb emu (command)

运行模拟器命令。

1
D:\Code\Git>adb emu

adb logcat [ (filter-spec) ]

查看设备日志。

  1. adb logcat MainActivity:I

    1
    2
    3
    4
    D:\Code\Git>adb logcat MainActivity:I
    ...
    I/DActivity( 2865): user's name is JiongBull, age is 27
    ...
  2. adb logcat *:E

    1
    2
    3
    4
    D:\Code\Git>adb logcat *:
    ...
    E/SQLiteLog( 1772): (1032) statement aborts at 2: [DELETE FROM shortcut_and_widget_previews]
    ...
  3. adb logcat -v process

    1
    2
    3
    4
    D:\Code\Git>adb logcat -v process
    ...
    I( 2050) Cannot sync untrimmable corpus: no sync (Icing)
    ...
  4. adb logcat -v tags

    1
    2
    3
    4
    D:\Code\Git>adb logcat -v tag
    ...
    I/Icing : Cannot sync untrimmable corpus: no sync
    ...
  5. adb logcat -v thread

    1
    2
    3
    4
    D:\Code\Git>adb logcat -v thread
    ...
    I( 2050: 2152) Cannot sync untrimmable corpus: no sync
    ...
  6. adb logcat -v raw

    1
    2
    3
    4
    D:\Code\Git>adb logcat -v raw
    ...
    Cannot sync untrimmable corpus: no sync
    ...
  7. adb logcat -v time

    1
    2
    3
    4
    D:\Code\Git>adb logcat -v time
    ...
    03-25 16:50:25.774 I/Icing ( 2050): Cannot sync untrimmable corpus: no sync
    ...
  8. adb logcat -v long

    1
    2
    3
    4
    5
    D:\Code\Git>adb logcat -v long
    ...
    [ 03-25 16:50:25.774 2050: 2152 I/Icing ]
    Cannot sync untrimmable corpus: no sync
    ...
  9. adb logcat -d -f /log.txt

    1
    D:\Code\Git>adb logcat -d -f /log.txt

adb forward —list

显示所有(PC —> DEVICE)映射的端口连接列表,每一行都以这样的格式显示,serial) " " (local) " " (remote) "\n"

adb forward —list

1
2
D:\Code\Git>adb forward --list
emulator-5554 tcp:6100 tcp:7100

adb forward (local) (remote)

映射端口连接(PC —> DEVICE)。

adb forward tcp:6100 tcp:7100

1
D:\Code\Git>adb forward tcp:6100 tcp:7100

adb forward —no-rebind (local) (remote)

adb forward (local) (remote)功能一样,但是如果local已经映射了就会失败。

adb forward —no-rebind tcp:6100 tcp:7100

1
2
D:\Code\Git>adb forward --no-rebind tcp:6100 tcp:7100
error: cannot rebind existing socket

adb forward —remove (local)

移除指定的映射端口连接。

adb forward —remove tcp:6100

1
2
3
4
5
6
D:\Code\Git>adb forward --list
emulator-5554 tcp:6100 tcp:7100

D:\Code\Git>adb forward --remove tcp:6100

D:\Code\Git>adb forward --list

adb forward —remove-all

移除所有的映射端口连接。

adb forward —remove-all

1
2
3
4
5
6
7
8
D:\Code\Git>adb forward --list
emulator-5554 tcp:5000 tcp:7000
emulator-5554 tcp:5100 tcp:7100


D:\Code\Git>adb forward --remove-all

D:\Code\Git>adb forward --list

adb reverse —list

显示所有来自设备的(DEVICE —> PC)映射的端口连接列表。

adb reverse —list

1
2
D:\Code\Git>adb reverse --list
host tcp:7000 tcp:5000

adb reverse (remote) (local)

反向映射端口连接(DEVICE —> PC)。

adb reverse tcp:7000 tcp:5000

1
D:\Code\Git>adb reverse tcp:7000 tcp:5000

adb reverse —no-rebind (remote) (local)

adb reverse (remote) (local)功能一样,但是如果remote已经映射了就会失败。

1
2
D:\Code\Git>adb reverse --no-rebind tcp:7000 tcp:5000
error: cannot rebind existing socket

adb reverse —remove (remote)

移除指定的反向映射端口连接。

adb reverse —remove tcp:7000

1
2
3
4
5
6
7
D:\Code\Git>adb reverse --list
host tcp:7000 tcp:5000


D:\Code\Git>adb reverse --remove tcp:7000

D:\Code\Git>adb reverse --list

adb reverse —remove-all

移除所有的反向映射端口连接。

adb reverse —remove-all

1
2
3
4
5
6
7
D:\Code\Git>adb reverse --list
host tcp:7000 tcp:5000
host tcp:7100 tcp:5100

D:\Code\Git>adb reverse --remove-all

D:\Code\Git>adb reverse --list

adb jdwp

列出所有拥有JDWP端口进程的进程号。

adb jdwp

1
2
3
4
5
D:\Code\Git>adb jdwp
1482
1585
1630
...

adb install [-lrtsdg] (file)

把包文件推送到设备上并安装。

  • -l 锁定应用
  • -r 替换已存在的应用
  • -t 允许安装测试包
  • -s 安装到sd卡中
  • -d 可以安装低版本安装包
  • -p 安装部分应用
  • -g 授权所有运行时权限
  1. adb install app.apk

    1
    2
    3
    4
    D:\Code\Git>adb install app.apk
    5521 KB/s (1148723 bytes in 0.203s)
    pkg: /data/local/tmp/app.apk
    Success
  2. adb install -l app.apk

    1
    2
    3
    4
    D:\Code\Git>adb install -l app.apk
    2944 KB/s (1148723 bytes in 0.380s)
    pkg: /data/local/tmp/app.apk
    Success
  3. adb install -r app.apk

    1
    2
    3
    4
    5
    6
    7
    8
    9
    D:\Code\Git>adb install app.apk
    3225 KB/s (1148723 bytes in 0.347s)
    pkg: /data/local/tmp/app.apk
    Failure [INSTALL_FAILED_ALREADY_EXISTS]

    D:\Code\Git>adb install -r app.apk
    4462 KB/s (1148723 bytes in 0.251s)
    pkg: /data/local/tmp/app.apk
    Success
  4. adb install -t app.apk

    1
    2
    3
    4
    D:\Code\Git>adb install -t app2.apk
    4085 KB/s (1196299 bytes in 0.285s)
    pkg: /data/local/tmp/app2.apk
    Success
  5. adb install -s app.apk
    没有SD卡或高版本的ROM会安装失败。

    1
    2
    3
    4
    D:\Code\Git>adb install -s  app1.apk
    2883 KB/s (1148723 bytes in 0.389s)
    pkg: /sdcard/tmp/app1.apk
    Failure [INSTALL_FAILED_INSUFFICIENT_STORAGE]
  6. adb install -d app.apk

    1
    2
    3
    4
    D:\Code\Git>adb install -d app2.apk
    4396 KB/s (1196299 bytes in 0.265s)
    pkg: /data/local/tmp/app2.apk
    Success
  7. adb install -p app.apk
    好像不支持。

    1
    2
    3
    D:\Code\Git>adb install -p app.apk
    1910 KB/s (1148723 bytes in 0.587s)
    Error: Unknown option: -p
  8. adb install -g app.apk
    好像不支持。

    1
    2
    3
    D:\Code\Git>adb install -g app.apk
    4934 KB/s (1148723 bytes in 0.227s)
    Error: Unknown option: -g

adb install-multiple [-lrtsdpg] (file…)

同时安装包多个apk到设备上,参数同adb install

  1. adb install-multiple app1.apk

    1
    2
    D:\Code\Git>adb install-multiple app1.apk
    Success
  2. adb install-multiple app1.apk app2.apk
    2.0的Gradle有bug。

    1
    2
    3
    D:\Code\Git>adb install-multiple D:\Code\Git\app1.apk D:\Code\Git\app2.apk
    Failed to finalize session
    Failure [INSTALL_FAILED_INVALID_APK: Split null was defined multiple times]

adb uninstall [-k] (package)

卸载设备上的应用包,-k表示保存数据和缓存目录。

  1. adb uninstall com.jiongbull.art.note

    1
    2
    D:\Code\Git>adb uninstall com.jiongbull.art.note
    Success
  2. adb uninstall -k com.jiongbull.art.note

    1
    2
    3
    4
    5
    6
    7
    8
    D:\Code\Git>adb uninstall -k com.jiongbull.art.note
    The -k option uninstalls the application while retaining the data/cache.
    At the moment, there is no way to remove the remaining data.
    You will have to reinstall the application with the same signature, and fully uninstall it.
    If you truly wish to continue, execute 'adb shell pm uninstall -k

    D:\Code\Git>adb shell pm uninstall -k com.jiongbull.art.note
    Success

adb bugreport

返回所有应该包含在错误报告中的设备信息。

adb bugreport

1
2
3
D:\Code\Git>adb bugreport
...
太多了,谁用谁知道

adb backup …

1
adb backup [-f (file)] [-apk|-noapk] [-obb|-noobb] [-shared|-noshared] [-all] [-system|-nosystem] [(packages...)]

把设备的数据归档写入文件中

  • -f 如果没有这个标识,数据将会写入到当前目录中的backup.ab文件中
  • -apk|-noapk 启用|禁用备份.apk文件自己,默认是noapk
  • -obb|-noobb 启用|禁用备份应用关联的apk扩展,默认是noobb
  • -shared|-noshared 启用|禁用备份设备共享存储/SD中的内容,默认是noshared
  • -all 备份所有安装的应用
  • -system|-nosystem 决定-all是否包含系统应用,默认是包含系统应用
  • packages... 将要备份的应用列表,如果设置了-all-shared标识,那么这个参数将是可选的

adb backup -f backup.ab -all

1
2
D:\Code\Git>adb backup -f backup.ab -all
Now unlock your device and confirm the backup operation...

adb restore (file)

从归档的备份文件中恢复设备内容。

adb restore backup.ab

1
2
D:\Code\Git>adb restore backup.ab
Now unlock your device and confirm the restore operation.

adb disable-verity

关闭在调试环境下的dm-verity检查。

adb disable-verity

1
D:\Code\Git>adb disable-verity

adb enable-verity

启用在调试环境下的dm-verity检查。

adb enable-verity

1
2
D:\Code\Git>adb enable-verity
error: closed

adb keygen (file)

生成adb的公/私钥,私钥保存在(file)文件中,公钥保存在(file).pub中。

adb keygen jiong

1
2
3
D:\Code\Git>adb keygen jiong
adb I 3952 2916 adb_auth_host.cpp:230] generate_key 'jiong'
adb I 3952 2916 adb_auth_host.cpp:183] Writing public key to 'jiong.pub'

adb help

显示帮助信息。

adb help

1
2
3
4
D:\Code\Git>adb help
Android Debug Bridge version 1.0.35
Revision 102d0d1e73de-android
...

adb version

显示版本号。

adb version

1
2
3
D:\Code\Git>adb version
Android Debug Bridge version 1.0.35
Revision 102d0d1e73de-android

脚本相关

adb wait-for[-(transport)]-(state)

等待设备进入给定的状态,状态可以是devicerecoverysideloadbootloader,端口可以是usblocalany,默认是any。

adb wait-for-local-device

1
D:\Code\Git>adb wait-for-local-device

adb start-server

确保服务正在运行。

adb start-server

1
D:\Code\Git>adb start-server

adb kill-server

关闭正在运行的服务。

adb kill-server

1
D:\Code\Git>adb kill-server

adb get-state

打印设备状态,offline | bootloader | device

adb get-state

1
2
D:\Code\Git>adb get-state
device

adb get-serialno

打印序列号。

adb get-serialno

1
2
D:\Code\Git>adb get-serialno
emulator-5554

adb get-devpath

打印设备路径。

adb get-devpath

1
2
D:\Code\Git>adb get-devpath
unknown

adb remount

重新挂载设备上的/system/vendor(如果是临时的话)、/oem(如果是临时的话)读写分区。

adb remount

1
2
D:\Code\Git>adb remount
remount succeeded

adb reboot [bootloader|recovery]

重启设备,可选择进入bootloaderrecovery模式。

  1. adb reboot bootloader

    1
    D:\Code\Git>adb reboot bootloader
  2. adb reboot recovery

    1
    D:\Code\Git>adb reboot recovery

adb reboot sideload

重启设备,进入recovery程序的sideload模式,需要root权限。

adb reboot sideload

1
D:\Code\Git>adb reboot sideload

adb root

使用root权限重启adbd守护程序。

adb root

1
2
D:\Code\Git>adb root
restarting adbd as root

adb unroot

不使用root权限重启adbd守护程序。

adb unroot

1
2
D:\Code\Git>adb unroot
restarting adbd as non root

adb usb

重启adbd守护程序监听usb。

adb usb

1
D:\Code\Git>adb usb

adb tcpip (port)

重启adbd守护程序监听指定端口。

adb tcpid 5333

1
2
D:\Code\Git>adb tcpip 5333
restarting in TCP mode port: 5333

网络相关

adb ppp (tty) [parameters]

通过USB运行PPP。

1
2
3
4
这个有点不明白,贴上原文解释。
Note: you should not automatically start a PPP connection.
<tty> refers to the tty for PPP stream. Eg. dev:/dev/omap_csmi_tty1
[parameters] - Eg. defaultroute debug dump local notty usepeerdns

adb sync notes: adb sync [ (directory) ]

同步目录,如果没有指定目录,/system/vendor(如果是临时的话)、/oem(如果是临时的话)和 /data分区将会更新。如果指定了目录,只有指定的分区将会更新。

环境变量

ADB_TRACE

指定打印调试信息,可以设置为以下列表中的值,用逗号隔开,1(代表所有)、adbsocketspacketsrwxusbsyncsysdepstransportjdwp

ANDROID_SERIAL

指定要连接的设备,如果通过-s指定了则该变量不起作用。

ANDROID_LOG_TAGS

在使用logcat的情况下,只有这些标签的调试信息才会打印。

分享与支持

  • 如果这篇文章对你有帮助,请分享下面的链接让更多人受益。
  • 更多支持,请点这里
文章目录
  1. 1. 如何查看命令
  2. 2. 设备连接相关命令
    1. 2.1. -a
    2. 2.2. -d
    3. 2.3. -e
    4. 2.4. -s (specific device)
    5. 2.5. -p (product name or path)
    6. 2.6. -H
    7. 2.7. -P
    8. 2.8. adb devices
    9. 2.9. adb connect (host)[:(port)]
    10. 2.10. adb disconnect [(host)[:(port)]]
  3. 3. 设备命令
    1. 3.1. adb push [-p] (local) (remote)
    2. 3.2. adb pull [-p] [-a] (remote) [(local)]
    3. 3.3. adb sync [ (directory) ]
    4. 3.4. adb shell
    5. 3.5. adb shell (command)
    6. 3.6. adb emu (command)
    7. 3.7. adb logcat [ (filter-spec) ]
    8. 3.8. adb forward —list
    9. 3.9. adb forward (local) (remote)
    10. 3.10. adb forward —no-rebind (local) (remote)
    11. 3.11. adb forward —remove (local)
    12. 3.12. adb forward —remove-all
    13. 3.13. adb reverse —list
    14. 3.14. adb reverse (remote) (local)
    15. 3.15. adb reverse —no-rebind (remote) (local)
    16. 3.16. adb reverse —remove (remote)
    17. 3.17. adb reverse —remove-all
    18. 3.18. adb jdwp
    19. 3.19. adb install [-lrtsdg] (file)
    20. 3.20. adb install-multiple [-lrtsdpg] (file…)
    21. 3.21. adb uninstall [-k] (package)
    22. 3.22. adb bugreport
    23. 3.23. adb backup …
    24. 3.24. adb restore (file)
    25. 3.25. adb disable-verity
    26. 3.26. adb enable-verity
    27. 3.27. adb keygen (file)
    28. 3.28. adb help
    29. 3.29. adb version
  4. 4. 脚本相关
    1. 4.1. adb wait-for[-(transport)]-(state)
    2. 4.2. adb start-server
    3. 4.3. adb kill-server
    4. 4.4. adb get-state
    5. 4.5. adb get-serialno
    6. 4.6. adb get-devpath
    7. 4.7. adb remount
    8. 4.8. adb reboot [bootloader|recovery]
    9. 4.9. adb reboot sideload
    10. 4.10. adb root
    11. 4.11. adb unroot
    12. 4.12. adb usb
    13. 4.13. adb tcpip (port)
  5. 5. 网络相关
    1. 5.1. adb ppp (tty) [parameters]
    2. 5.2. adb sync notes: adb sync [ (directory) ]
  6. 6. 环境变量
    1. 6.1. ADB_TRACE
    2. 6.2. ANDROID_SERIAL
    3. 6.3. ANDROID_LOG_TAGS
  7. 7. 分享与支持