adb查看服务列表
adb查看服务列表
1 | adb shell service list |
adb查看当前运行的服务
在 Android 开发和调试中,你可以使用 adb (Android Debug Bridge) 命令结合 dumpsys 工具来查看当前系统中运行的服务。最常用和有效的方法是使用 dumpsys activity services 命令。
🔧 核心命令
1 | adb shell dumpsys activity services [PACKAGE_NAME] |
详细说明:
查看所有运行的服务:
1
adb shell dumpsys activity services
- 这个命令会输出系统中所有正在运行的
Service的详细信息,内容非常多。 - 输出会按包名(
SERVICE行)和进程进行分组。 - 信息包括:服务名称、进程 ID (PID)、启动状态(
started=true/false)、绑定信息(connections)、创建时间等。
- 这个命令会输出系统中所有正在运行的
查看特定应用包名下的服务:
1
adb shell dumpsys activity services com.example.myapp
- 将
com.example.myapp替换为你的目标应用包名。 - 这会过滤输出,只显示该应用包名下的服务,信息更集中,更容易查找。
- 将
查看特定服务:
1
adb shell dumpsys activity services com.example.myapp/.MyServiceName
- 指定完整的组件名(包名 + 服务类名)可以精确查找某个服务。
🧩 示例输出解析
执行 adb shell dumpsys activity services com.example.myapp 后,你可能会看到类似这样的输出片段:
1 | USER 0 UID 10123 (userId=0) Running services: |
关键信息解读:
com.example.myapp/.BookManagerService: 正在运行的服务全名。processName=com.example.myapp:remote: 服务运行在名为:remote的独立进程中(这在 AIDL 场景中很常见)。started=true: 表示该服务已被startService()或bindService()启动。connections:或bindingCount=1: 表示有客户端(如 Activity)通过bindService()成功绑定了此服务。这是验证 AIDL 服务是否被正确使用的关键指标。
🔍 其他辅助命令
虽然 dumpsys activity services 是最直接的,但以下命令有时也有用:
adb shell ps | grep <package_name>:- 查看特定包名相关的进程。
- 如果你的服务运行在独立进程(如
:remote),你会看到额外的进程。 - 示例:
adb shell ps -A | grep com.example.myapp
adb shell dumpsys activity processes <package_name>:- 查看特定应用的进程信息,包括进程状态、内存等,可以间接确认服务进程是否存在。
adb logcat | grep -i service:- 实时查看 Logcat 中与 Service 相关的日志,服务启动 (
onCreate,onBind)、绑定 (Bound to)、解绑 (Unbound from) 等事件通常会有日志输出。
- 实时查看 Logcat 中与 Service 相关的日志,服务启动 (
✅ 总结
要查看当前运行的 Service,**首选命令是 adb shell dumpsys activity services [package_name]**。
- 使用包名过滤 (
com.example.myapp) 可以快速定位目标应用的服务。 - 重点关注输出中的
started=true和connections(或bindingCount) 字段,它们能明确告诉你服务是否在运行以及是否有客户端绑定。 - 结合
ps命令可以确认服务是否在独立进程中运行。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Fleming's Blog!

