adb
adb 的工作原理
启动一个 adb 客户端时,此客户端首先检查是否有已运行的 adb 服务器进程(adb-server)。如果没有,它将启动服务器进程。当服务器启动时,它与本地 TCP 端口 5037 绑定,并侦听从 adb 客户端发送的命令--------所有 adb 客户端均使用端口 5037 与 adb-server通信。
通过无线连接PC
1、将 Android 设备与要运行 adb 的电脑连接到同一个局域网,比如连到同一个 WiFi。
2、 将设备与电脑通过 USB 线连接。应确保连接成功(可运行 adb devices
看是否能列出该设备)。
3、让设备在 5555 端口监听 TCP/IP 连接:
adb tcpip 5555
4、断开 USB 连接。
5、 找到设备的 IP 地址。
6、通过 IP 地址连接设备。这里的 <device-ip-address>就是上一步中找到的设备 IP 地址。
adb connect <device-ip-address>
7、断开无线连接
adb disconnect <device-ip-address>
常用命令
参照:https://mazhuang.org/awesome-adb/#%E5%9F%BA%E6%9C%AC%E7%94%A8%E6%B3%95
命令语法:adb [-d|-e|-s <serialNumber>] <command>
-d:指定真机设备,后面跟设备ID
-e:指定模拟器设备,后面跟模拟器设备ID
-s:指定特定设备ID的真机/模拟器
##获取连接的设备信息
adb devices
cf264b8f device-设备已连接
emulator-5554 offline-表示设备未连接成功或无响应
10.129.164.6:5555 device
##启动/停止adb-server
adb -P port start-server
adb kill-server
#查看adb版本
adb version
adb 的运行原理是 PC 端的 adb server 与手机端的守护进程 adbd建立连接,然后 PC 端的 adb client 通过 adb server 转发命令,adbd 接收命令后解析运行。所以如果 adbd 以普通权限执行,有些需要 root 权限才能执行的命令无法直接用 adb xxx 执行。这时可以 adb shell 然后 su 后执行命令,也可以让 adbd 以 root 权限执行,这个就能随意执行高权限命令了。(注意:部分机型需要先安装 adbd Insecure,才能指定root权限)
adbd指定root权限
adb root
adbd恢复飞非root权限
adb unroot
应用管理
查看应用列表
adb shell pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER]
图片.png
安装应用
adb install [-lrtsdg] <path_to_apk>
卸载应用
adb uninstall [-k] <packagename>
-k 参数可选,表示卸载应用但保留数据和缓存目录
清除应用数据与缓存
adb shell pm clear <packagename>
图片.png
adb install 实际是分三步完成:
1、push apk 文件到 /data/local/tmp
2、调用 pm install 安装。
3、删除 /data/local/tmp 下的对应 apk 文件。
查看前台activities
adb shell dumpsys activity activities | grep mFocusedActivity
查看正在运行的services
adb shell dumpsys activity services [<packagename>]
查看应用详细信息
adb shell dumpsys package <packagename>
输出中包含很多信息,包括 Activity Resolver Table、Registered ContentProviders、包名、userId、安装后的文件资源代码等路径、版本信息、权限信息和授予状态、签名版本信息等。
查看应用安装路径
adb shell pm path <PACKAGE>
启动/调起Activity
adb shell am start -n com.tencent.mm/.ui.LauncherUI
调起service
adb shell am startservice -n com.tencent.mm/.plugin.accountsync.model.AccountAuthenticatorService
发送广播
adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -n org.mazhuang.boottimemeasure/.BootCompletedReceiver
强制停止应用
adb shell am force-stop <packagename>
统预定义广播及正常触发时机
广播1.png
广播2.png
文件管理
复制设备里的文件到电脑
adb pull <设备里的文件路径> [电脑上的目录]
复制电脑里的文件到设备
adb push <电脑上的文件路径> <设备里的目录>
模拟按键输入
adb shell input keyevent <keycode>
滑动解锁
adb shell input swipe 300 1000 300 500(起始点x坐标 起始点y坐标 结束点x坐标 结束点y坐标)
模拟按键输入-keycode-01.png
模拟按键输入-keycode-02.png
查看日志
Android 系统的日志分为两部分,底层的 Linux 内核日志输出到 /proc/kmsg,Android 的日志输出到 /dev/log。
android日志
adb logcat -v long ActivityManager:I *:S(输出日志指定格式为long,日志级别为S)
清空日志
adb logcat -c
内核日志
db shell dmesg
日志优先级.png
其他
查看设备型号
adb shell getprop ro.product.model
电池状况
db shell dumpsys battery
屏幕分辨率
adb shell wm size
屏幕密度
adb shell wm density
显示屏参数
adb shell dumpsys window displays
获取android_id
adb shell settings get secure android_id
获取系统版本
adb shell getprop ro.build.version.release
获取IP地址
db shell ifconfig | grep Mask
获取MAC地址
adb shell cat /sys/class/net/wlan0/address
获取CPU信息
adb shell cat /proc/cpuinfo
获取内存信息
adb shell cat /proc/meminfo
获取系统更多属性
adb shell cat /system/build.prop
屏幕截图
adb exec-out screencap -p > sc.png
录制屏幕
adb shell screenrecord /sdcard/filename.mp4