Android SDK: adb 常用命令的使用(无线连接、端口转发、文件传输、APK安装卸载、Logcat日志)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xietansheng/article/details/85472666

本文链接: https://blog.csdn.net/xietansheng/article/details/85472666

1. adb 简介

adb(Android Debug Bridge)是用于 PC端 与 Android模拟器/设备 进行通信的命令行工具。

adb命令在{Android_SDK}/platform-toos/目录下。

官网ADB介绍: https://developer.android.google.cn/studio/command-line/adb

adb 常规命令:

adb devices [-l]                        # 列出已连接的设备(-l 输出型号等详细信息)
adb help                                # 打印帮助信息
adb version                             # 打印 adb 的版本信息
adb -s <serial_number> [commands...]    # 将 adb 命令发送给指定的已连接设备

查看已连接的设备, 执行adb devices输出格式:

List of devices attached
serial_number   state
serial_number   state
...
  • serial_number: 设备的序列号,adb 服务器识别具体设备的唯一标识。
  • state: 设备当前的状态, 有以下值:
    • offline: 设备离线, 与 adb 服务器无响应, 需要重连。
    • device: 设备正常与 adb 服务器连接。
    • no device: 未连接设备

具体输出示例:

$ adb devices
List of devices attached
emulator-5554           device      # 模拟器设备
device_ip_address:5555  device      # 无线连接的设备
813KPTM2090496          device      # USB 连接的设备

2. 设备连接

2.1 adb 服务

启动一个 adb 客户端时,PC端的 adb 服务器进程将自动启动(如果没有启动),并绑定本地 TCP 5037 端口,监听 adb 客户端发送的命令。

# 检测 adb 服务器是否在运行,如果没有则启动 adb 服务器
adb start-server
# 检测 adb 服务器是否在运行,如果没有则启动 adb 服务器,然后再列出已连接设备
adb devices

# 终止 adb 服务器进程
adb kill-server

2.2 USB 连接设备

USB 数据路连接 Android 设备前,需要先打开开发者选项,并启用 USB调试:

  • 显示开发者选项: 设置 -> 系统/关于手机 -> 连续点击 7 次版本号,返回上一层,在底部便能找到开发者选项(具体不同手机方法细节不同)。
  • 启用USB调试: 设置 -> 系统/关于手机 -> 开发者选项 -> 打开USB调试开关。

然后再用 USB 数据线连接 Android 设备,在 PC 终端执行adb devices查看连接情况。

如果连接的设备系统是 Android 4.2.2 或更高版本,当设备连接 adb 服务器时,将在手机弹出对话框,询问是否允许这台计算机上调试。

2.3 WLAN 无线连接设备

adb 服务器端除了使用 USB 连接设置外,也可以使用无线连接。无线连接需要 Android 设备和 adb 服务器 PC 连接到同一个 WLAN 网络,某些 PC 端可能需要正确配置防火墙的访问点以支持设备通过网络对 adb 服务器的访问。

无线连接步骤:

# 1. 必须先使用 USB 连接到 Android 设备,并且能通过 adb 正常访问

# 2. 设置目标设备监听 5555 端口上的 TCP/IP 连接(有多个设备使用 -s 指定)
adb tcpip 5555

# 3. 断开 USB 连接(拔掉 USB 数据线)

# 4. 查找目标设备的 IP 地址: 
#    设置 -> 网络和互联网/无线和网络/连接 -> WLAN
#    点击已连接的 WIFI 找到 IP地址
#    假设 IP地址为: 192.168.0.100

# 5. 连接设备, 默认连接的端口号为 5555, 如果是其他端口, IP为 HOST:PORT
adb connect 192.168.0.100

# 6. 查看是否设备是否正常连接
adb devices

# 7. 断开无线连接的设备
adb disconnect 192.168.0.100

3. 端口转发

3.1 端口转发: PC -> Android

使用adb forward命令可以设置 PC 端的任意端口的 TCP 请求转发到已连接的 Android 设备上的指定端口。

#
# 1. 设置转发规则
#
# 将 PC主机的 8000端口 的TCP请求转发到 Android设备的 8080端口
adb forward tcp:8000 tcp:8080

#
# 2. 查看所有已设置的转发规则
#
adb forward --list

#
# 3. 移除转发规则
#
# 移除指定的 PC本地 端口转发规则(tcp:8000 为 PC本地 的端口)
adb forward --remove tcp:8000

# 移除所有的转发规则
adb forward --remove-all

3.2 端口转发: Android -> PC

端口转发可以从 PC主机 转发到 Android设备,也可以使用adb reverse命令,将 Android设备 的端口转发到 PC主机。

#
# 1. 设置转发规则
#
# 将 Android设备的 8080端口 的TCP请求转发到 PC主机的 8000端口
adb reverse tcp:8080 tcp:8000

#
# 2. 查看所有已设置的转发规则
#
adb reverse --list

#
# 3. 移除转发规则
#
# 移除指定的 Android设备 端口转发规则(tcp:8080 为 Android设备 的端口)
adb reverse --remove tcp:8080

# 移除所有的转发规则
adb reverse --remove-all

场景应用举例: 在 PC 端执行“python3 -m http.server 8000”, 在 8000 端口 开启 python 自带的一个 HTTP 服务器,再执行“adb reverse tcp:8080 tcp:8000”命令设置 Android 到 PC 的端口转发,在 Android 设备浏览器访问“http://localhost:8080”,直接就访问到了 PC 端 HTTP 服务器。

4. apk 安装卸载

使用 adb 的install命令将 PC 上的 APK 包安装到已连接的 Android 设备上, 或使用uninstall命令从 Android 设备上卸载 APP。

#
# 安装 APK 到 Android设备, -r 表示替换当前的已安装的版本
#
adb install [-r] <apk_file_path>

#
# 卸载指定的 APP, -k 表示卸载后保留 APP 的数据和缓存
#
adb uninstall [-k] <package_name>

5. 文件传输

使用 adb 的pushpull命令将文件或目录(及其子目录)从 PC本地 推送到 Android设备,或从 Android设备 复制文件或目录(及其子目录)。

  • 推送文件: PC -> Android
格式: 
    adb push <LocalFileOrDir> <RemoteFileOrDir>

示例:
    adb push aa.txt /mnt/sdcard/        # 把 aa.txt 文件上传到 /mnt/sdcard/ 目录下, 并以原文件名保存
    adb push aa.txt /mnt/sdcard/bb.txt  # 把 aa.txt 文件上传到 /mnt/sdcard/ 目录下, 以 bb.txt 命名保存
    
    adb push aaDir /mnt/sdcard/bbDir    # 把文件夹 aaDir 上传到 /mnt/sdcard/bbDir, 
                                        # 如果 bbDir 文件夹存在, 保存为 /mnt/sdcard/bbDir/aaDir
                                        # 如果 bbDir 文件不夹存在, 保存为 /mnt/sdcard/bbDir
  • 拉取文件: Android -> PC
格式: 
    adb pull <RemoteFileOrDir> [LocalFileOrDir]

示例:
    adb pull /mnt/sdcard/aa.txt         # 把 /mnt/sdcard/aa.txt 文件拉取到 当前目录, 并以原文件名保存
    adb push /mnt/sdcard/aa.txt aaDir/  # 把 /mnt/sdcard/aa.txt 文件拉取到 ./aaDir/ 目录下, 并以原文件名保存
    adb push /mnt/sdcard/aa.txt bb.txt  # 把 /mnt/sdcard/aa.txt 文件拉取到 当前目录, 保存为 bb.txt
    
    adb push /mnt/sdcard/aaDir          # 把 /mnt/sdcard/aaDir 文件夹拉取到 当前目录, 并以原文件夹名保存
    adb push /mnt/sdcard/aaDir bbDir    # 把 /mnt/sdcard/aaDir 文件夹拉取到 本地,
                                        # 如果 bbDir 文件夹存在, 保存为 ./bbDir/aaDir
                                        # 如果 bbDir 文件夹不存在, 保存为 ./bbDir

如果需要删除文件,可以发送 shell 命令到 Android 设备,参考后面的发送 shell 命令介绍。

6. 日志输出: logcat

官网 LogCat 详细介绍: https://developer.android.google.cn/studio/command-line/logcat

语法格式:

adb logcat [options] [filter-spec]

输出日志:

# 在控制台输出所有日志
adb logcat

# 先远程登录到设备的 Shell 环境中, 
# 然后再设备中执行 logcat 输出日志
adb shell
logcat

7. adb shell

adb shell 命令的介绍,详见下一篇: Android SDK: adb shell 命令的使用


猜你喜欢

转载自blog.csdn.net/xietansheng/article/details/85472666