Android调试系列之dumpsys命令
2016-04-11 23:03
190 查看
Android提供了dumpsys工具,可以用于查看很多系统服务信息。我们可以直接执行dumpsys命令,会将所有服务信息都列出来。但是这样得到的结果太多,不容易拿到有效的信息,可以在命令后面加上相应的参数来得到具体的服务信息。使用方法为
dumpsys [service]
下面简单列出了常用的service:
meminfo 显示内存信息
activity 显示activitiy信息
cpuinfo 显示CPU信息
package packagename 获取安装包信息
batterystats 显示电量信息
window 显示键盘,窗口和它们的关系
使用下面的命令来查看可以dump出的所有service:
$adb shell dumpsys | grep DUMP
![](http://img.blog.csdn.net/20160411224038762?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
由于dumpsys的功能很强大,这里只介绍App开发中用的比较多功能,meminfo和activity,另外简单提一下查看package信息。
dumpsys meminfo
可以查看系统所有App的内存使用概况:
$adb shell dumpsys meminfo
也可以在命令后面跟程序的包名或进程id来查看某个程序的内存使用情况:
$adb shell dumpsys meminfo $package_name or $pid
![](http://img.blog.csdn.net/20160411224301389?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
meminfo信息中主要看Native Heap和Dalvik Heap两行。我们知道Android应用的内存分为两部分:dalvik部分和native部分,dalvik部分就是在java中创建对象时在堆中分配的内存,native部分通常是指c实现部分分配的内存,像bitmap对象的分配就是在native堆上,虚拟机对引用内存进行了限制,dalvik堆和native堆不能超过指定的阈值,否则就容易发生OOM。
Heap内存有三列,Heap Size、Heap Alloc和Heap Free,分别对应于可用的最大内存、已经分配的内存和剩余可用内存值,第一个等于后面两个的和。如果Heap Free变得很小,很可能就会发生OOM。
dumpsys activity
执行这个命令后,会显示很多内容,我们直接找到对我们有用的信息。
![](http://img.blog.csdn.net/20160411224654521?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
ACTIVITY MANAGER RECENT TASKS列出了最近打开的Task的信息,最上面的一行是最新打开的Task信息,下面依次为更早时候打开的Task的信息。上图中,我们最近打开的taskId为800,taskAffinity为com.enjoy.vicleedemo。
![](http://img.blog.csdn.net/20160411224859048?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
ACTIVITY MANAGER ACTIVITIES列出了每个task的详细信息,即这个Task包含哪些Activity,他们的显示顺序是什么样的等等。上图中,id为800的task包含两个Activity,分别为
com.enjoy.vicleedemo/.animation.FrameAnimationActivity
com.enjoy.vicleedemo/.global.EntryActivity
而id为799的task只包含一个Activity
com.ss.android.article.news/.activity.MainActivity
![](http://img.blog.csdn.net/20160411225048791?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
Running activities展示了最近打开过的Activity,按照时间倒序列出。
另外,如果想要查看当前打开的是哪个Activity,也可以通过下面的命令来查看。
adb logcat -s ActivityManager
dumpsys package
![](http://img.blog.csdn.net/20160411225154877?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
Activity Resolver Table、Receiver Resolver Table、Service Resolver Table、Registered ContentProviders、ContentProvider Authorities中会列出不同类别的应用一些基本组件的信息。
![](http://img.blog.csdn.net/20160411225300128?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
Packages项中列出了应用的一些基本信息,如
versionCode=1 targetSdk=21 版本号为1,目标sdk为21
grantedPermissions 表示当前应用申请的系统权限。
如内容有误,欢迎交流~
dumpsys [service]
下面简单列出了常用的service:
meminfo 显示内存信息
activity 显示activitiy信息
cpuinfo 显示CPU信息
package packagename 获取安装包信息
batterystats 显示电量信息
window 显示键盘,窗口和它们的关系
使用下面的命令来查看可以dump出的所有service:
$adb shell dumpsys | grep DUMP
由于dumpsys的功能很强大,这里只介绍App开发中用的比较多功能,meminfo和activity,另外简单提一下查看package信息。
dumpsys meminfo
可以查看系统所有App的内存使用概况:
$adb shell dumpsys meminfo
也可以在命令后面跟程序的包名或进程id来查看某个程序的内存使用情况:
$adb shell dumpsys meminfo $package_name or $pid
meminfo信息中主要看Native Heap和Dalvik Heap两行。我们知道Android应用的内存分为两部分:dalvik部分和native部分,dalvik部分就是在java中创建对象时在堆中分配的内存,native部分通常是指c实现部分分配的内存,像bitmap对象的分配就是在native堆上,虚拟机对引用内存进行了限制,dalvik堆和native堆不能超过指定的阈值,否则就容易发生OOM。
Heap内存有三列,Heap Size、Heap Alloc和Heap Free,分别对应于可用的最大内存、已经分配的内存和剩余可用内存值,第一个等于后面两个的和。如果Heap Free变得很小,很可能就会发生OOM。
dumpsys activity
执行这个命令后,会显示很多内容,我们直接找到对我们有用的信息。
ACTIVITY MANAGER RECENT TASKS列出了最近打开的Task的信息,最上面的一行是最新打开的Task信息,下面依次为更早时候打开的Task的信息。上图中,我们最近打开的taskId为800,taskAffinity为com.enjoy.vicleedemo。
ACTIVITY MANAGER ACTIVITIES列出了每个task的详细信息,即这个Task包含哪些Activity,他们的显示顺序是什么样的等等。上图中,id为800的task包含两个Activity,分别为
com.enjoy.vicleedemo/.animation.FrameAnimationActivity
com.enjoy.vicleedemo/.global.EntryActivity
而id为799的task只包含一个Activity
com.ss.android.article.news/.activity.MainActivity
Running activities展示了最近打开过的Activity,按照时间倒序列出。
另外,如果想要查看当前打开的是哪个Activity,也可以通过下面的命令来查看。
adb logcat -s ActivityManager
dumpsys package
Activity Resolver Table、Receiver Resolver Table、Service Resolver Table、Registered ContentProviders、ContentProvider Authorities中会列出不同类别的应用一些基本组件的信息。
Packages项中列出了应用的一些基本信息,如
versionCode=1 targetSdk=21 版本号为1,目标sdk为21
grantedPermissions 表示当前应用申请的系统权限。
如内容有误,欢迎交流~
相关文章推荐
- Android Studio在线更新
- Android温故之-Activity
- Android---Adapter
- 【Android】10、使用显式Intent
- Android开源库项目集锦
- Android开发之ListView利用OnScrollListener实现分页加载数据
- Android:Sqlite插入或更新--replace
- Android之值得开发者(安卓)必备的十八大开发资源
- Android 多线程及线程通信
- React-Native系列Android——Native与Javascript通信原理(一)
- Android Connectivity分析(1)- ConnectivityManager
- Android中的Binder跨进程通信机制
- 一个简单的Volley图片二级缓存
- Android属性动画,从源码的角度分析
- android的编码习惯
- Android------startActivityForResult的详细用法
- Android日历只显示年月,只显示年
- 使用MediaProjection和MediaRecorder实现屏幕录制
- Android笔记【1】--Handler
- Android中期项目设计