dumpsys-package
dumpsys-package
ams和pms是android系统最重要的系统服务,本文解析dumpsys package命令,看哪些PMS相关的系统信息,数据结构是运行时可以查看的。
命令提示
console:/ # dumpsys package -h
Package manager dump options:
[-h] [-f] [--checkin] [cmd] ...
--checkin: dump for a checkin
-f: print details of intent filters
-h: print this help
cmd may be one of:
l[ibraries]: list known shared libraries
f[eatures]: list device features
k[eysets]: print known keysets
r[esolvers] [activity|service|receiver|content]: dump intent resolvers
perm[issions]: dump permissions
permission [name ...]: dump declaration and use of given permission
pref[erred]: print preferred package settings
preferred-xml [--full]: print preferred package settings as xml
prov[iders]: dump content providers
p[ackages]: dump installed packages
s[hared-users]: dump shared user IDs
m[essages]: print collected runtime messages
v[erifiers]: print package verifier info
d[omain-preferred-apps]: print domains preferred apps
i[ntent-filter-verifiers]|ifv: print intent filter verifier info
version: print database version info
write: write current settings now
installs: details about install sessions
check-permission <permission> <package> [<user>]: does pkg hold perm?
dexopt: dump dexopt state
compiler-stats: dump compiler statistics
service-permissions: dump permissions required by services
<package.name>: info about given package
AuthBlog:秋城https://www.cnblogs.com/houser0323
数据结构
| 命令 | 源码 | 关键字 | 释义 |
|---|---|---|---|
| l[ibraries] | mSharedLibraries | Libraries: | 所有库信息 |
| f[eatures] | mAvailableFeatures | Features: | 系统支持的feature |
| k[eysets] | mSettings.mKeySetManagerService.dumpLPr() | Key Set Manager: | keyset信息 |
| r[esolvers] | IntentResolver.java#dump() | Activity Resolver Table: | 所有四大组件intent接收器信息 |
| perm[issions] | mSettings.dumpPermissionsLPr() | Permissions: | 所有权限信息 |
| permission [name ...] | mSettings.dumpPermissionsLPr() | Permissions: | 特定权限信息 |
| pref[erred] | PreferredIntentResolver#dump() | Preferred Activities User | launcher activity偏好信息 |
| preferred-xml [--full] | mSettings.writePreferredActivitiesLPr | 生成xml | |
| prov[iders] | PackageParser.Provider mProviders.mProviders | Registered ContentProviders: | 所有ContentProvider信息 |
| p[ackages] | mSettings.dumpPackagesLPr() | Packages: | 所有package信息 |
| s[hared-users] | mSettings.dumpSharedUsersLPr() | Shared users: | 所有共享uid信息 |
| m[essages] | mSettings.dumpReadMessagesLPr()/dumpCriticalInfo() | Settings parse messages | 读系统packageSetting解析信息mReadMessages、读uiderrors.txt |
| v[erifiers] | mRequiredVerifierPackage | Verifiers: | 需要验证的apk |
| d[omain-preferred-apps] | PackageSetting#getIntentFilterVerificationInfo() | App verification status: | 域验证信息 |
| i[ntent-filter-verifiers] | mIntentFilterVerifierComponent | Intent Filter Verifier: | AppLink相关 |
| version | mSettings.dumpVersionLPr() | Database versions: | 数据库版本 |
| write | mSettings.writeLPr() | 这是写操作用于替换packages.xml | |
| installs | mInstallerService.dump() | Active install sessions: | 活动中的install session信息 |
| check-permission [] | checkPermission() | 返回值0表有;-1表无 | |
| dexopt | dumpDexoptStateLPr() | Dexopt state: | 所有apk的dexopt信息 |
| compiler-stats | dumpCompilerStatsLPr() | Compiler stats: | 所有apk的编译器信息 |
| service-permissions | serviceInfo.permission | Service permissions: | 所有service的权限信息 |
| <package.name> | DumpState.OPTION_SHOW_FILTERS | 特定apk的所有信息-最常用 |
常用操作
1.包名和apk名互查
$ dumpsys package com.android.systemui |grep -i path
codePath=/system/priv-app/SystemUI
resourcePath=/system/priv-app/SystemUI
path: /system/priv-app/SystemUI/SystemUI.apk
知道包名查路径还可以用pm path <package name>更方便,但是知道apk名称查包名就需要dumpsys了,如下
$ dumpsys package p |grep -B 5 SystemUI|grep Package
Package [com.android.systemui] (633b2ed):
pkg=Package{8e872f3 com.android.systemui}
2.查看系统支持的feature
与pm list features命令作用相同
$ dumpsys package f
......
android.hardware.bluetooth
android.hardware.usb.host
......
3.查看apk权限信息
$ dumpsys package <package name>
打印中查找关键字
- "declared permissions:"应用自定义权限
- "requested permissions:"AndroidManifest.xml文件中所有request的权限
- "install permissions:"安装时就赋予的权限
- "runtime permissions:"运行时权限
4.查看apk的flag信息
查看某个apk的flag信息,如systemui
$ dumpsys package com.android.systemui |grep Flags
privateFlags=[ PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION DEFAULT_TO_DEVICE_PROTECTED_STORAGE DIRECT_BOOT_AWARE PRIVILEGED ]
pkgFlags=[ SYSTEM HAS_CODE PERSISTENT ]
可以看到systemui是system系统应用也是persistent应用,如果要查找所有的system应用可以用pm list packages -s,查找所有PERSISTENT的应用呢,可以dumpsys package p然后在结果中过滤,除此之外还有另外两种方法dumpsys meminfo和logcat -b events |grep -i am_proc_start
总结
dumpsys是一个很强大的命令,大多数的系统信息都可以用它抓出来,当你想快捷获取系统信息又没有思路时,不妨尝试一下dumpsys,会有惊喜。
dumpsys package能轻松获取多数的PMS数据结构的值,还能替换更新packages.xml。
示例中也多次提到pm命令,这俩结合的话,有关PMS模块的大部分系统信息和操作都可以便捷实现,有效提高开发调试速度。
dumpsys-package的更多相关文章
- adb shell dumpsys package 查看versionCode
adb shell dumpsys package +包名 输出可以查看包名 aapt dump xmltree xxx.apk AndroidManifest.xml 查看AndroidManife ...
- [Android] adb shell dumpsys的使用
reference to :http://blog.csdn.net/g19920917/article/details/38032413 有两种方法可以查看service list: 1. adb ...
- adb shell dumpsys
adb shell dumpsys activity activities -- class/packagename adb shell dumpsys batterystate --reset ...
- 【转】adb shell dumpsys 命令
adb shell dumpsys,默认打印出当前系统所有service信息,在后面可加上具体的服务名 需要列出当前运行的服务,可运行: adb shell dumpsys | findstr DUM ...
- 「Android」adb调试源码(针对dumpsys SurfceFlinger、trace.txt获取)
首先对ADB作简单的阐述,接下来对adb shell dumpsys SurfaceFlinger服务的dump信息的查看.以及ANR问题如何获取trace文件并简单分析. -×*********** ...
- android dumpsys
dumpsys dumpsys is a tool that runs on Android devices and provides information about system service ...
- adb shell dumpsys的使用
该命令用于打印出当前系统信息,默认打印出设备中所有service的信息,可以在命令后面加指定的service name. 有两种方法可以查看service list: 1. adb shell dum ...
- Android dumpsys命令详细使用
一.dumpsys命令介绍 1.命令说明 Dumpsys用户系统诊断,它运行在设备上,并提供系统服务状态信息 命令格式: adb shell dumpsys [system serbices] 2.系 ...
- adb shell dumpsys的用法
一. 打印出设备中所有service的信息 zh@zh:~$adb shell dumpsys -l (字母l)zh@zh:~$adb shell service list 二.查询到运行的syste ...
- android中dumpsys命令使用
转自:https://testerhome.com/topics/1462 adb shell dumpsys,默认打印出当前系统所有service信息,在后面可加上具体的服务名 需要列出当前运行的服 ...
随机推荐
- SQL Server 2005 sa登录失败。已成功与服务器建立连接 但是在登录过程中发生错误。 provider 共享内存提供程序 error 0 管道的另一端上无任何进程。
SQL Server 2005 Express版 用户 'sa' 登录失败.该用户与可信 SQL Server 连接无关联.提示错误:已成功与服务器建立连接 但是在登录过程中发生错误. provide ...
- stand up meeting 1/7/2016
part 组员 今日工作 工作耗时/h 明日计划 工作耗时/h UI 冯晓云 调研下滑条的存在问题,尝试替换方案 6 全面实行替换 ...
- vue2.x学习笔记(三)
接着前面的内容:https://www.cnblogs.com/yanggb/p/12562137.html. vue实例 要使用vue提供的特性与功能,都需要通过vue实例来使用. 创建一个vue实 ...
- php用户量剧增导致cpu100%解决办法
在php扩展里边开启opcache扩展,此扩展是解析php的缓存机制,每次解析都要消耗cpu,所以有大量的fpm进程去占用cpu,开启此扩展之后cpu就瞬间下来了,只解析第一次,往后的都使用缓存.很好 ...
- 十七, Oracle索引约束
管理索引-原理介绍 索引是用于加速数据存取的数据对象.合理的使用索引可以大大降低i/o次数,从而提高数据访问性能. 单列索引 适当的索引对于大型数据库的性能有不错的提升, 但在创建索引时要小心.选择字 ...
- python教程(目录)
很早就想出一套python的零基础入门教程,各种原因一直没动手.今天立个flag,2020年一定完成这个目标. 入门篇 完全零基础的小白应该从这里看起. 一.计算机原理 这里不是要让大家去深入的学习计 ...
- Spring5参考指南: SpEL
文章目录 Bean定义中的使用 求值 支持的功能 函数 Bean引用 If-Then-Else Elvis Safe Navigation 运算符 集合选择 集合投影 表达式模板化 SpEL的全称叫做 ...
- Docker安装Alibaba Nacos教程(单机)
SpringCloudAlibaba实战教程系列 阿里巴巴Nacos官方文档 docker:官网 docker:镜像官网:镜像官网可以所有应用,选择安装环境:会给出安装命令,例如:docker pul ...
- 数据挖掘入门系列教程(十二)之使用keras构建CNN网络识别CIFAR10
简介 在上一篇博客:数据挖掘入门系列教程(十一点五)之CNN网络介绍中,介绍了CNN的工作原理和工作流程,在这一篇博客,将具体的使用代码来说明如何使用keras构建一个CNN网络来对CIFAR-10数 ...
- 【Linux常见命令】cut命令
cut - remove sections from each line of files 参数: -b 可以按字节来查看文件中的内容 -b参数用在中文上,容易出现乱码问题.因为中文字符一个字符占两个 ...