adb 的使用

下载安装及使用

很多工具都自带 adb, 比如 Android Studio, 微信调试工具, 各种模拟器, 但是很多时候各种工具会抢占端口, 而开发者并不太容易找到其 adb.exe, 我更愿意从 adbshell 官网 下载 adb 并自行配置使用

adb 运行原理

Android 调试系统是一个面对客户服务系统,包括三个组成部分:

一个在你用于开发程序的电脑上运行的客户端。你可以通过shell端使用adb命令启动客户端。 其他Android工具比如说ADT插件和DDMS同样可以产生adb客户端. 在你用于开发的机器上作为后台进程运行的服务器。该服务器负责管理客户端与运行于模拟器或设备上的adb守护程序(daemon)之间的通信。.

一个以后台进程的形式运行于模拟器或设备上的守护程序(daemon)。. 当你启动一个adb客户端,客户端首先确认是否已有一个adb服务进程在运行。如果没有,则启动服务进程。当服务器运行, adb服务器就会绑定本地的TCP端口5037并监听adb客户端发来的命令,—所有的adb客户端都是用端口 5037与adb服务器对话的.

adb 常用命令

列出所有连接的Android设备, 返回序列号和状态

$ adb devices

连接到某设备

$ adb connect [address]

进入 shell 模式 (由于Android是基于Linux的, 可以使用各种Linux命令)

$ adb shell
root@MI 6 Plus:/ # ls
...

进入 shell 模式后可通过 exit 退出

安装应用

$ adb install [option] <path>

比如 adb install test.apk

在指定设别上安装应用, -s 指定的是设备ID, 通过 adb devices 获取到

$ adb -s 35c7b1bf0804 install -r weex-app.apk

卸载应用

$ adb uninstall [options] <PACKAGE>

比如 adb uninstall com.test.app

从设备下载指定的文件到电脑上

$ adb pull <remote> [local]

比如 adb pull /sdcard/demo.mp4 e:\, 若不指定 local, 默认使用当前路径

从电脑上传指定文件到设备

$ adb push <local> <remote>

比如 adb push d:\test.apk /sdcard

打印日志

$ adb logcat [option] [filter-specs]

打印系统信息

$ adb shell dumpsys [options]

比如 adb shell dumpsys battery

获取设备的屏幕截图

$ adb shell screencap <filename>

比如 adb shell screencap /storage/emulated/0/screen.png

以root身份重新进入adb

$ adb root

查看端口占用

quanzaiyu@DESKTOP-VEB85IN MINGW64 /d/Software/adb
$ ./adb nodaemon server
cannot bind 'tcp:5037'
quanzaiyu@DESKTOP-VEB85IN MINGW64 /d/Software/adb
$ netstat -ano | findstr "5037"
quanzaiyu@DESKTOP-VEB85IN MINGW64 /d/Software/adb
$ tasklist | findstr "adb"
映像名称                       PID 会话名              会话#       内存使用
========================= ======== ================ =========== ============
adb.exe                      19752 Console                    1      9,800 K
adb.exe                      14020 Console                    1      6,492 K
adb.exe                      20452 Console                    1      6,508 K

连接MuMu模拟器

quanzaiyu@DESKTOP-VEB85IN MINGW64 /d/Software/adb
$ adb connect 127.0.0.1:7555
connected to 127.0.0.1:7555
quanzaiyu@DESKTOP-VEB85IN MINGW64 /d/Software/adb
$ adb devices
List of devices attached
127.0.0.1:7555  device

连接夜神模拟器

使用夜神自带adb:

quanzaiyu@DESKTOP-VEB85IN MINGW64 /d/Program Files/Nox/bin
$ ./nox_adb connect 127.0.0.1:62001
connected to 127.0.0.1:62001
quanzaiyu@DESKTOP-VEB85IN MINGW64 /d/Program Files/Nox/bin
$ ./nox_adb devices
List of devices attached
127.0.0.1:62001 device

使用默认adb:

quanzaiyu@DESKTOP-VEB85IN MINGW64 /d/Software/adb
$ adb connect 127.0.0.1:62001
connected to 127.0.0.1:62001
quanzaiyu@DESKTOP-VEB85IN MINGW64 /d/Software/adb
$ adb devices
List of devices attached
127.0.0.1:62001  device

参考:

在 HBuilder 中使用 MuMu 模拟器进行调试

工具 -> 设置 中 配置 adb 的路径和 MuMu模拟器 的端口 7555

端口映射

  • 把Android上的某个端口映射到电脑(adb forward),比如 adb forward tcp:8081 tcp:8081
  • 把电脑的某个端口映射到Android系统(adb reverse),比如 adb reverse tcp:8081 tcp:8081

参考资料

MIT Licensed | Copyright © 2018-present 滇ICP备16006294号

Design by Quanzaiyu | Power by VuePress