写点什么

Android 常用 adb 命令,开源新作

用户头像
Android架构
关注
发布于: 5 小时前

| pm list permission-groups | 输出所有已知的权限组。 |


| pm list permissions [options] group | 输出所有已知权限 |


| pm list features | 输出系统的所有功能。 |


| pm list libraries | 输出当前设备支持的所有库。 |


| pm list users | 输出系统上的所有用户。 |


| pm path package | 输出给定 package 的 APK 的路径。 |


| pm get-install-location | 返回当前安装位置。返回值: 0 [auto]:让系统决定最佳位置。


1 [internal]:安装在内部设备存储上,。2 [external]:安装在外部介质上。 |

[](

)模拟用户事件


  • 键盘事件:adb shell input keyevent <KEYCODE>,其中 KEYCODE 见本文结尾的附表例:点击返回键,相应指令:adb shell input keyevent 4 adb shell input keyevent 3 (Home 键)

  • 点击事件:adb shell input tap <x> <y>例: 点击坐标(500,500),相应指令: adb shell input tap 500 500.

  • 滑动事件: adb shell input swipe <x1> <y1> <x2> <y2> 例: 从坐标(300,500)滑动到(100,500),相应指令: adb shell input swipe 300 500 100 500.例: 200ms 时间从坐标(300,500)滑动到(100,500),相应指令: adb shell input swipe 300 500 100 500 200.

[](

)logcat 日志


  • 显示包含的 logcat logcat \| grep <str>

  • 显示包含,并忽略大小写的 logcat logcat \| grep -i <str>


例:进入 adb shell 输入 logcat | grep ABC 显示包含 ABC 的 log


  • 打印 tag 为 xys 标签log adb logcat -s xys

  • 读完所有 log 后返回,而不会一直等待 logcat -d

  • 清空 log 并退出 logcat -c

  • 打印最近的count logcat -t <count>

  • 格式化输出 Log,其中 format 有如下可选值: logcat -v <format>


brief — 显示优先级/标记和原始进程的 PID (默认格式)


process — 仅显示进程 PID


tag — 仅显示优先级/标记


thread — 仅显示进程:线程和优先级/标记


raw — 显示原始的日志信息,没有其他的元数据字段


time — 显示日期,调用时间,优先级/标记,PID


long —显示所有的元数据字段并且用空行分隔消息内容


例: 查看某个进程的日志 adb logcat -v process |grep 8607


  • 保存 log 到文件 adb logcat > ./log.txt

[](

)进行屏幕截图


screencap 命令是一个用于对设备显示屏进行屏幕截图的 shell 实用程序。在 shell 中,此语法为:


screencap filename


要从命令行使用 screencap,请输入以下命令:


$ adb shell screencap /sdcard/screen.pn


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


g


以下屏幕截图会话示例向您展示使用 adb shell 捕获屏幕截图,并使用 pull 命令从设备下载此文件:


$ adb shell


shell@ $ screencap /sdcard/screen.png


shell@ adb pull /sdcard/screen.png

[](

)录制视频


screenrecord 命令是一个用于录制设备(运行 Android 4.4(API 级别 19)及更高版本)显示屏的 shell 实用程序。此实用程序将屏幕 Activity 录制到 MPEG-4 文件。


注:音频不与视频文件一起录制。


开发者可以使用此文件创建宣传视频或培训视频。在 shell 中,此语法为:


screenrecord [options] filename


要从命令行使用 screenrecord,请输入以下命令:


$ adb shell screenrecord /sdcard/demo.mp4


按 Control + C 停止屏幕录制,否则,到三分钟或 --time-limit 设置的时间限制时,录制将自动停止。


要开始录制设备屏幕,请运行 screenrecord 命令以录制视频。然后,运行 pull 命令从设备将此视频下载到主计算机。下面是一个录制会话示例:


$ adb shell


shell@ $ screenrecord --verbose /sdcard/demo.mp4(press Control + C to stop)


shell@ $ exit


$ adb pull /sdcard/demo.mp4


screenrecord 实用程序可以任何支持的分辨率和所需的比特率进行录制,同时保留设备显示屏的纵横比。默认情况下,此实用程序以原生显示分辨率和屏幕方向进行录制,最大时长为三分钟。

[](

)设置端口转发


您可以使用 forward 命令设置任意端口转发 — 将对特定主机端口的请求转发到模拟器/设备实例上的其他端口。下面向您介绍如何设置主机端口 6100 到模拟器/设备端口 7100 的转发:


adb forward tcp:6100 tcp:7100

[](

)通过 WLAN 连接到设备


一般情况下,通过 USB 使用 adb。不过,也可以按照下面的说明通过 WLAN 使用它。


  1. 将 Android 设备和 adb 主计算机连接到这两者都可以访问的常用 WLAN 网络。请注意,并非所有访问点均适用;您可能需要使用已正确配置防火墙的访问点以支持 adb 的访问点。


注:如果您尝试连接到 Android Wear 设备,则通过关闭与其连接的手机的蓝牙强制将它连接到 WLAN。


  1. 使用 USB 电缆将设备连接到主计算机。

  2. 设置目标设备以侦听端口 5555 上的 TCP/IP 连接。


$ adb tcpip 5555


  1. 从目标设备断开 USB 电缆连接。

  2. 查找 Android 设备的 IP 地址。例如,在 Nexus 设备上,您可以通过访问 Settings > About tablet(或 About phone) > Status > IP address 查找 IP 地址。或者,在 Android Wear 设备上,您可以通过访问 Settings > Wi-Fi Settings > Advanced > IP address 查找 IP 地址。

  3. 连接至设备,通过 IP 地址识别此设备。


$ adb connect device_ip_address


  1. 请确认您的主计算机已连接至目标设备:


$ adb devices


List of devices attached


device_ip_address:5555 device


现在,您可以开始操作了!


如果 adb 连接丢失:


  1. 请确保您的主机仍与您的 Android 设备连接到同一个 WLAN 网络。

  2. 通过再次执行 adb connect 步骤重新连接。

  3. 如果无法连接,则重置 adb 主机:


adb kill-server


然后,从头开始操作。


停止方法:


adb disconnect //断开 wifi 连接


adb usb //切换到 usb 模式


其他操作


  • 获取序列号 adb get-serialno

  • 重启到 bootloader,即刷机模式 adb reboot bootloader

  • 重启到 recovery,即恢复模式 adb reboot recovery

  • 获取机器 MAC 地址 adb shell cat /sys/class/net/wlan0/address

  • 查看占用内存排序 adb shell top

  • 查看占用内存前 6 的app:adb shell top -m 6

  • 刷新一次内存信息,然后返回:adb shell top -n 1

  • 查询各进程内存使用情况:adb shell procrank

  • 杀死一个进程:adb shell kill [pid]

  • 查看进程列表:adb shell ps

  • 查看指定进程状态:adb shell ps -x [PID]

  • 查看后台 services 信息: adb shell service list

  • 查看当前内存占用: adb shell cat /proc/meminfo

  • 查看 IO 内存分区:adb shell cat /proc/iomem

  • 将 system 分区重新挂载为可读写分区:adb remount

  • 列出目录下的文件和文件夹,等同于 dos 中的 dir 命令:adb shell ls

  • 进入文件夹,等同于 dos 中的 cd 命令:adb shell cd <folder>

  • 重命名文件: adb shell rename path/oldfilename path/newfilename

  • 删除 system/avi.apk: adb shell rm /system/avi.apk

  • 删除文件夹及其下面所有文件:adb shell rm -r <folder>

  • 移动文件:adb shell mv path/file newpath/file

  • 设置文件权限:adb shell chmod 777 /system/fonts/DroidSansFallback.ttf

  • 新建文件夹:adb shell mkdir path/foldelname

  • 查看文件内容:adb shell cat <file>

  • 查看 wifi 密码:adb shell cat /data/misc/wifi/*.conf

  • 查看 bug 报告:adb bugreport

  • 跑 monkey:adb shell monkey -v -p your.package.name 500 adb -s 192.168.244.151:5555 shell monkey -v -p com.bolexim 500


附表


下表中, 箭头左边为 keycode 值,箭头右边为 keycode 的含义,部分用中文标注


0 –> “KEYCODE_UNKNOWN”


1 –> “KEYCODE_MENU”


2 –> “KEYCODE_SOFT_RIGHT”


3 –> “KEYCODE_HOME” //Home 键


4 –> “KEYCODE_BACK” //返回键


5 –> “KEYCODE_CALL”


6 –> “KEYCODE_ENDCALL”


7 –> “KEYCODE_0” //数字键 0


8 –> “KEYCODE_1”


9 –> “KEYCODE_2”


10 –> “KEYCODE_3”


11 –> “KEYCODE_4”


12 –> “KEYCODE_5”


13 –> “KEYCODE_6”


14 –> “KEYCODE_7”


15 –> “KEYCODE_8”


16 –> “KEYCODE_9”


17 –> “KEYCODE_STAR”


18 –> “KEYCODE_POUND”


19 –> “KEYCODE_DPAD_UP”


20 –> “KEYCODE_DPAD_DOWN”


21 –> “KEYCODE_DPAD_LEFT”


22 –> “KEYCODE_DPAD_RIGHT”


23 –> “KEYCODE_DPAD_CENTER”


24 –> “KEYCODE_VOLUME_UP” //音量键+


25 –> “KEYCODE_VOLUME_DOWN” //音量键-


26 –> “KEYCODE_POWER” //Power 键


27 –> “KEYCODE_CAMERA”


28 –> “KEYCODE_CLEAR”


29 –> “KEYCODE_A” //字母键 A


30 –> “KEYCODE_B”


31 –> “KEYCODE_C”

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
Android常用adb命令,开源新作