首先看一下dumpsys有哪些功能:
dumpsys 用来给出手机中所有应用程序的信息,并且也会给出现在手机的状态。
dumpsys [Option]
meminfo 显示内存信息
cpuinfo 显示CPU信息
account 显示accounts信息
activity 显示所有的activities的信息
window 显示键盘,窗口和它们的关系
wifi 显示wifi信息
从我的G14中可以看到它从以下service获得所有的信息
Currently running services:
SurfaceFlinger
accessibility
account
activity
alarm
appwidget
assetredirection
audio
backup
battery
batteryinfo
bluetooth
bluetooth_a2dp
bluetooth_hid
bluetooth_network
clipboard
connectivity
content
cpuinfo
device_policy
devicestoragemonitor
diskstats
dropbox
entropy
hardware
input_method
iphonesubinfo
isms
location
media.audio_flinger
media.audio_policy
media.camera
media.player
meminfo
mount
netstat
network_management
notification
package
接下来,来看看Android系统是如何实现dumpsys的。
dumpsys的代码在mydroid/frameworks/base/cmds/dumpsys/dumpsys.cpp
所有的dump信息都是由重载了Binder中的dump函数的类来完成:
@Override
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
...
}
代码很简单,发现搜有dump的信息都是由defaultServiceManager(关于Android的ServiceManager的结构分析参见我之后的一篇文章)提供的由系统注册的所有service来提供信息。
以meminfo为例:
它是在mydroid/frameworks/base/services/java/com/android/server/am/ActivityManagerService.java中的setSystemProcess函数处被注册的
SrviceManager.addService("activity", m);
ServiceManager.addService("meminfo", new MemBinder(m));
...
MemBinder->ProcessRecord->各个正在运行状态的ApplicationThread的状态(mydroid/frameworks/base/core/java/android/app/ActivityThread.java),从中得到需要的meminfo信息。
这其中其实牵涉到负责的Android的是如何管理Linux的进程,同时又是如何把Linux的进程管理起来提供各种信息给Java层使用。
总之,关键还是package的管理和它的活动周期的管理问题。值得深入理解。
相关推荐
`Android dumpsys` 是一个强大的命令行工具,用于获取Android系统的内部信息,它允许开发者无需进行繁琐的跟踪或断点调试就能实时监控关键服务的状态。这个工具是Android开发者和维护人员进行诊断和调试的重要手段,...
`dumpsys`命令是Android操作系统提供的一种强大的调试工具,它允许开发者和系统管理员获取系统服务的详细信息。这个命令的名字来源于“dump system”,正如其名,它的主要功能就是输出系统服务的状态信息。通过`adb ...
标题中的"easy-dumpsys"是一个工具,它简化了Android开发者使用`adb shell dumpsys activity`命令的过程。在Android开发中,`dumpsys`是一个强大的命令行工具,它允许开发者获取系统服务的详细状态信息。`activity`...
本文将详细介绍如何利用不同的工具和技术来诊断和解决音频问题,包括查看声卡信息、PCM设备状态以及利用`dumpsys`命令进行深入分析。 #### 1. 常用命令 ##### 1.1 查看当前声卡信息 通过`cat /proc/asound/cards`...
### Android之常用命令和工具详解 #### 一、获取 APK 的包名方法 在 Android 开发过程中,有时候我们需要快速地获取某个 APK 文件的包名,这有助于进行更深入的应用调试和分析工作。以下将详细介绍几种获取 APK 包...
在Mac和Linux操作系统中,想要实时监控Android设备的帧率,通常需要通过ADB(Android Debug Bridge)命令行工具进行复杂的操作,例如使用`adb shell dumpsys gfxinfo packages`命令来获取信息,然后手动解析日志,这...
Monkey工具就是Android提供的一款用于进行自动化压力测试的工具,它可以帮助开发者模拟用户随机操作,以此来检测应用的稳定性和性能瓶颈。这篇教程将深入探讨如何使用Monkey工具进行压力测试,并通过一个具体的例子...
9. `dumpsys`、`dumpstate`和`service list`:这些命令提供了获取设备状态信息的方法,例如系统服务的状态、设备配置信息等。开发者可以利用它们诊断问题或获取系统运行时的数据。 10. `pm`(Package Manager):这...
使用命令`adb shell dumpsys DdmpDeviceMonitorService`可以在鸿蒙系统中使用调试工具,这个命令可以帮助开发者快速使用调试工具。 17. 编译XTS中的acts文件 使用命令`./build.sh product_name=rk3568 system_size...
"安卓系统开发调试工具整理" Android 系统开发调试工具是安卓开发者不可或缺的助手,这些工具可以帮助开发者快速高效地开发、测试和调试安卓应用程序。下面是安卓系统开发调试工具的整理,涵盖了 adb 常用命令、CPU...
此外,`adb shell dumpsys`命令可用于获取设备的各种系统服务状态,如电池、网络等。 ### 5. 传输文件 adb提供了在电脑和设备间传输文件的功能。`adb push <local_file> <remote_path>`用于将本地文件复制到设备,...
adb shell dumpsys window windows | findstr "mCurrentFocus" ``` 此命令将返回当前活动窗口的详细信息,包括Activity名称等。 - **示例**: 假设我们正在测试一款应用,运行上述命令后可以看到当前聚焦的...
此外,如果你需要更深入地分析内存,可以使用其他ADB命令,例如 `dumpsys meminfo`,它可以显示每个应用的内存使用详情,包括dalvik-cache、堆内存、 ashmem 和native内存等。这对于排查特定应用的内存泄漏问题非常...
- `adb shell dumpsys`:获取系统服务的状态信息。 7. 无线调试: - 配合`adb tcpip`命令,可以在无需USB连接的情况下通过Wi-Fi进行无线调试。 在日常开发中,adb是不可或缺的工具,无论你是要快速部署应用、...
开发者可以使用`adb shell`命令执行各种诊断操作,如`dumpsys meminfo`来查看应用的内存使用情况。 5. **TraceView**: TraceView是一个详细的CPU使用情况分析工具,可以帮助你找到代码中的性能瓶颈。通过记录和分析...
App 信息 获取当前界面元素:adb shell dumpsys activity top 获取任务列表:adb shell dumpsys activity activities App 入口 adb logcat |grep -i displayed aapt dump badging mobike.apk | grep launchable-...
通常,开发者会使用ADB(Android Debug Bridge)命令行工具配合"dumpsys package"命令来查看应用的签名信息。对于普通用户,他们可能需要下载第三方应用,如"Package Disabler Pro"等,这些工具提供了友好的界面来...
Android系统自带的工具有很多,例如dumpsys、dumpstatus、top、pm、am、tinyalsa、settings、logcat、monkey、svc、wm、screencap、screenrecord等,这些工具可以帮助我们更好地了解和管理Android系统。这些工具都是...