sidebar: auto

Android 调试桥 (adb)

Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令可用于执行各种设备操作,例如安装和调试应用。adb 提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件:

  • 客户端:用于发送命令。客户端在开发机器上运行。您可以通过发出 adb 命令从命令行终端调用客户端。
  • 守护程序 (adbd):用于在设备上运行命令。守护程序在每个设备上作为后台进程运行。
  • 服务器:用于管理客户端与守护程序之间的通信。服务器在开发机器上作为后台进程运行。

命令查看已连接设备

# 查看已连接设备$ adb devicesList of devices attached35643218009**** device

连接设备

无线调试需要连接后才能出现在 adb devices

    1. 打开 无线调试

系统设置 -> 开发者选项 -> 调试 -> 无线调试

    1. 连接ip地址和端口

这里ip没有固定的话会经常变, 端口每次打开无线调试也会变

# 连接 网络设备:ip$ adb connect connected to 192.168.10.168:39773# 再查看一下设备列表$ adb devices                     List of devices attached35643218009*** device192.168.10.168:39773    device # ++

断开连接

$ adb disconnect success

安装应用/卸载应用

$ adb install success$ adb uninstall success

查看已安装应用包名

$ adb shell pm list packagespackage:com.android.wallpaperpickerpackage:com.android.providers.contactspackage:com.android.captiveportalloginpackage:com.mediatek.dataprotection...

搜索包 (仅 Linux/Mac/Git Bash)

$ adb shell pm list packages | grep "com.android"package:com.android.wallpaperpickerpackage:com.android.providers.contacts

打开应用

adb shell am start -W -n /

$ adb shell am start -W -n com.example.myapplication/com.example.myapplication.MainActivityStarting: Intent { cmp=com.example.myapplication/.MainActivity }Status: okActivity: com.example.myapplication/.MainActivityThisTime: 191TotalTime: 191WaitTime: 246Complete

Activity 获取方式:

使用 apktool 工具解包, 用文本编辑器打开 AndroidManifest.xml 拿到 activityandroid:name

第一个是首屏

  • apktool 官网下载
# 如何解包$ ./apktool.bat d woc.apk

关闭应用

$ adb shell am kill success# 杀死后台所有进程$ adb shell am kill-all

上传文件

adb push

$ adb push README.md /data/tmp/woc.mdREADME.md: 1 file pushed, 0 skipped. 4.1 MB/s (683 bytes in 0.000s)

下载文件

# 下载文件到电脑中$ adb pull 路径

查看日志

adb logcat *

# 过滤指定关键词 macos / linux$ adb logcat * | grep "connect to RTMP server by url"...# 过滤指定关键词 windows$ adb logcat * | find "connect to RTMP server by url"...

截图

TODO

模拟操作

TODO

打开网页

# 浏览器打开百度$ adb shell am start -a android.intent.action.VIEW -d https://www.baidu.com

提取应用 apk

# 获取包文件$ adb shell pm list packages | grep "teamviewer"# 获取应用安装包所在位置$ adb shell pm path com.teamviewer.quicksupport.addon.universal# 根据 path 获取 apk$ adb pull /data/app/com.teamviewer.quicksupport.addon.universal-6gbqnHHmnLCq7BiaQln5Bg==/base.apk

模拟输入文本

# 注意需要转码, 比如 \e3 这种, 不能输入中文$ adb shell input text "hello,world"

发送广播

adb shell am broadcast -a -p –e …

# 发送广播模拟# 附加数据类型说明 --ei(nt),  --es(tring), --eb(ool)$ adb shell am broadcast -a com.lhs.xcam.cmdaction -p cn.alauncher.dvr --ei camtype 1 --es cmd startrtc --es url "rtmp://xxxx/live/livestream/233"

参考

  • 指令 am : 是 activity manager 的缩写, 可以启动Activity、打开或关闭进程、发送广播等操作