Skip to content

Latest commit

 

History

History
381 lines (284 loc) · 9.23 KB

adb.md

File metadata and controls

381 lines (284 loc) · 9.23 KB

Android ADB 备忘清单

ADB,Android Debug Bridge,包含在 Google 的 Android SDK 中,可用于从计算机控制您的 Android 设备。以下是您可以与 ADB 一起使用的一些最常见的命令及其用法

入门

设备基础

:-- --
adb devices 列出连接的设备
adb devices -l 列出连接的设备和种类
adb root root 权限重新启动 adbd
adb start-server 启动 adb 服务器
adb kill-server 杀死 adb 服务器
adb remount 重新挂载具有读/写访问权限的文件系统
adb reboot 重启设备
adb reboot bootloader 将设备重新启动到快速启动
adb disable-verity 将设备重新启动到快速启动

  • wait-for-device 可以在 adb 之后指定,以确保该命令在设备连接后运行
  • -s 可用于在多个连接时将命令发送到特定设备

示例

$ adb wait-for-device devices
 List of devices attached
 somedevice-1234 device
 someotherdevice-1234 device
$ adb -s somedevice-1234 root

Logcat

:-- --
adb logcat 开始将日志消息打印到标准输出
adb logcat -g 显示当前日志缓冲区大小
adb logcat -G <size> 设置缓冲区大小(K 或 M)
adb logcat -c 清除日志缓冲区
adb logcat *:V 启用所有日志消息(详细)
adb logcat -f <filename> 转储到指定文件

示例

$ adb logcat -G 16M
$ adb logcat *:V > output.log

过滤日志输出

  • V 详细(最低优先级)
  • D 调试
  • I 信息
  • W 警告
  • E 错误
  • F 严重错误
  • S 静默(最高优先级)

过滤器表达式显示了优先级不低于 警告 的所有标记的所有日志消息:

$ adb logcat *:W

文件管理

:-- --
adb push <local> <remote> 将本地复制到远程设备
adb pull <remote> <local> 将远程设备从设备复制到本地

示例

$ echo "This is a test" > test.txt
$ adb push  test.txt /sdcard/test.txt
$ adb pull /sdcard/test.txt pulledTest.txt

远程 Shell

:-- --
adb shell <command> 在设备上运行指定的命令(大多数 unix 命令在这里工作)
adb shell wm size 显示当前屏幕分辨率
adb shell wm size WxH 将分辨率设置为 WxH
adb shell pm list packages 列出所有已安装的包
adb shell pm list packages -3 列出所有已安装的 3rd 方包
adb shell monkey -p app.package.name 启动指定包

包安装

:-- --
adb shell install <apk> 安装应用程序
adb shell install <path> 手机路径安装应用
adb shell install -r <path> 手机路径安装应用
adb shell uninstall <name> 删除应用程序

Paths

:-- --
/data/data/<package>/databases 应用程序数据库
/data/data/<package>/shared_prefs/ 共享偏好
/data/app 用户安装的apk
/system/app 预装的 APK 文件
/mmt/asec 加密的应用程序|App2SD
/mmt/emmc 内部 SD 卡
/mmt/adcard 外部/内部 SD 卡
/mmt/adcard/external_sd 外置 SD 卡

:-- --
adb shell ls 列出目录内容
adb shell ls -s 每个文件的打印尺寸
adb shell ls -R 递归列出子目录

手机信息

:-- --
adb get-statе 打印设备状态
adb get-serialno 获取序列号
adb shell dumpsys iphonesybinfo 获取 IMEI
adb shell netstat 列出 TCP 连接
adb shell pwd 打印当前工作目录
adb shell dumpsys battery 电池状态
adb shell pm list features 列出电话功能
adb shell service list 列出所有服务
adb shell dumpsys activity <package>/<activity> 活动信息
adb shell ps 打印进程状态
adb shell wm size 显示当前屏幕分辨率
dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp' 打印当前应用程序的打开活动

包信息

:-- --
adb shell list packages 列出包名称
adb shell list packages -r 列出包名 + apks 的路径
adb shell list packages -3 列出第三方包名称
adb shell list packages -s 仅列出系统包
adb shell list packages -u 列出包名称 + 已卸载
adb shell dumpsys package packages 列出所有应用程序的信息
adb shell dump <name> 列出一个包裹的信息
adb shell path <package> apk文件的路径

设备相关命令

:-- --
adb reboot-recovery 重启设备进入恢复模式
adb reboot fastboot 重启设备进入恢复模式
adb shell screencap -p "/path/to/screenshot.png" 截图
adb shell screenrecord "/path/to/record.mp4" 录制设备屏幕
adb backup -apk -all -f backup.ab 备份设置和应用程序
adb backup -apk -shared -all -f backup.ab 备份设置、应用程序和共享存储
adb backup -apk -nosystem -all -f backup.ab 仅备份非系统应用程序
adb restore backup.ab 恢复以前的备份
adb shell am start -a android.intent.action.VIEW -d URL 打开网址
adb shell am start -t image/* -a android.intent.action.VIEW 打开画廊

权限

:-- --
adb shell permissions groups 列出权限组定义
adb shell list permissions -g -r 列出权限详细信息

Logs

:-- --
adb logcat [options] [filter] [filter] 查看设备日志
adb bugreport 打印错误报告

常见的 ADB 命令

将文件推送到 Android 设备的下载文件夹

$ adb push example.apk /mnt/Download/

列出所有已安装的包并获取完整路径

$ adb shell pm list packages -f

从安卓设备中提取文件

$ adb pull /mnt/Download/example.apk

从主机安装 apk 到 Android 设备

$ adb shell install example.apk

从 Android 设备存储安装 apk

$ adb shell install /mnt/Download/example.apk

设置网络代理

$ adb shell settings put global http_proxy <address>:<port>

禁用网络代理

$ adb shell settings put global http_proxy :0

显示连接的设备并选择一个设备和外壳

$ adb devices
$ adb -s 7f1c864e shell

7f1c864e 是设备 ID

通过 ip 地址无线连接到设备

$ adb connect 192.168.56.101:5555

adb 通过 wifi

我们可以通过 wifi 或专门使用 tcp 连接使用 adb。 要通过 wifi 使用 adb,首先通过 usb 连接手机并启用 usb 调试。然后列出所有设备:

$ adb devices
# 这应该给出这样的输出:
# device_id    device

现在检查 android 设备的 ip

$ adb shell ifconfig
# 输出:

wlan0  Link encap:UNSPEC    Driver icnss
       inet addr:XXX.XXX.X.XX  Bcast:XXX.XXX.X.XXX

记下 inet addr 后面的 ip 地址。我们稍后会需要它。现在在某个端口重新启动 tcpip

$ adb tcpip $port

例如 5555:

$ adb tcpip 5555

您现在可以断开使用。 现在连接到设备只需给出以下命令:

$ adb connect $ip:$port

like:

$ adb connect 192.168.1.4:5555

从计算机上的 apk 文件安装应用程序

$ adb install /Users/dev/projects/myapp.apk

查找应用的 apk 路径

$ adb shell pm path com.example.myapp

com.example.myapp 替换为您自己的应用程序包名称

按名称查找应用的包名

$ adb shell pm list package | grep app_name

将 apk 从设备提取到您的计算机

$ adb pull /data/app/com.example.myapp.apk ./

将文件从计算机复制到设备

$ adb push path/to/local/file /sdcard/foo.txt

滚动屏幕

$ adb shell input swipe 300 300 500 1000 #
$ adb shell input swipe 500 1000 300 300 #

发文本

使用虚拟键盘发送文本:

$ adb shell input text "Hello World"

发送按键事件

$ adb shell input keyevent 66
# 66 是回车键码

发送点击

点击又名点击屏幕:

$ adb shell input tap x y

查看包的日志

$ adb shell 'logcat --pid=$(pidof -s <package_name>)'

查看特定包的日志