adb shell dumpsys package

1 需求

  • 获取手机中声明的所有权限
    • perm[issions]: dump permissions
  • 获取手机中申请指定权限的所有应用
    • permission [name ...]: dump declaration and use of given permission
  • 获取手机所有应用的provider
    • prov[iders]: dump content providers
  • 获取手机中共享指定UID的所有应用
    • s[hared-users]: dump shared user IDs
  • 获取指定应用的所有信息
    • <package.name>: info about given package
  • 判断应用是否获取指定权限
    • ​​​​​​​​​​​​​​check-permission <permission> <package> [<user>]: does pkg hold perm?
  • ​​​​​​​获取服务需要的权限
    • ​​​​​​​​​​​​​​service-permissions: dump permissions required by services

2 语法

Package manager dump options:
  [-h] [-f] [--checkin] [--all-components] [cmd] ...
    --checkin: dump for a checkin
    -f: print details of intent filters
    -h: print this help
    --all-components: include all component names in package dump
  cmd may be one of:
    apex: list active APEXes and APEX session state
    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
    q[ueries]: dump app queryability calculations
    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

3 示例


4 参考资料​​​​​​​


用途一:获取手机中拥有指定权限的所有应用列表

adb shell dumpsys package permission android.permission.QUERY_ALL_PACKAGES

  • Packges:AndroidManifest.xml的uses-permission声明的权限
  • Shared users:AndroidManifest.xml的sharedUserId获取的权限

Permissions:
  Permission [android.permission.QUERY_ALL_PACKAGES] (409409c):
    sourcePackage=android
    uid=1000 gids=null type=0 prot=normal
    perm=Permission{e483aa5 android.permission.QUERY_ALL_PACKAGES}

Packages:
  Package [com.hanweb.android.xazwfw.activity] (d9d1053):
    userId=10316
    pkg=Package{a0b6d90 com.hanweb.android.xazwfw.activity}
    codePath=/data/app/~~0EAqfRY94-05y1IBQKIMKw==/com.hanweb.android.xazwfw.activity-_e3ijB3tmHEJBG8j1UA4fQ==
    versionCode=120 minSdk=21 targetSdk=28
    versionName=2.2.3
    splits=[base]
    apkSigningVersion=2
    applicationInfo=ApplicationInfo{a0b6d90 com.hanweb.android.xazwfw.activity}
    flags=[ HAS_CODE ALLOW_CLEAR_USER_DATA VM_SAFE_MODE ]
    privateFlags=[ PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE PRIVATE_FLAG_REQUEST_LEGACY_EXTERNAL_STORAGE PARTIALLY_DIRECT_BOOT_AWARE PRIVATE_FLAG_ALLOW_NATIVE_HEAP_POINTER_TAGGING ]
    forceQueryable=false
    queriesPackages=[]
    dataDir=/data/user/0/com.hanweb.android.xazwfw.activity
    supportsScreens=[small, medium, large, xlarge, resizeable, anyDensity]
    usesLibraries:
      android.test.base
    usesOptionalLibraries:
      org.apache.http.legacy
    usesLibraryFiles:
      /system/framework/android.test.base.jar
      /system/framework/org.apache.http.legacy.jar
    timeStamp=2021-12-07 08:51:08
    firstInstallTime=2021-12-07 08:51:14
    lastUpdateTime=2021-12-07 08:51:14
    installerPackageName=zte.com.market
    signatures=PackageSignatures{f9fb689 version:2, signatures:[1916398], past signatures:[]}
    installPermissionsFixed=true
    pkgFlags=[ HAS_CODE ALLOW_CLEAR_USER_DATA VM_SAFE_MODE ]
    declared permissions:
    requested permissions:
      android.permission.QUERY_ALL_PACKAGES
    install permissions:
      android.permission.QUERY_ALL_PACKAGES: granted=true
    User 0: ceDataInode=682292 installed=true hidden=false suspended=false distractionFlags=0 stopped=true notLaunched=false enabled=0 instant=false virtual=false
    overlay paths:
      /product/overlay/NavigationBarMode3Button/NavigationBarMode3ButtonOverlay.apk
      gids=[3003]
      runtime permissions:

Shared users:
  SharedUser [android.uid.systemui] (83f0702):
    userId=10109
    Packages
      PackageSetting{12c52e7 com.android.systemui/10109}
      PackageSetting{5fce2e3 com.zte.cn.zteshare/10109}
    install permissions:
      android.permission.QUERY_ALL_PACKAGES: granted=true
    User 0: 
      gids=[1077, 1065, 3002, 3003, 3001, 3006]
      runtime permissions:

用途二:获取手机中拥有指定权限的、且包名带android和qti的所有应用列表

adb shell dumpsys package permission android.permission.INTERNET | findstr /C:"Package [" | findstr "android qti"


用途三:获取某个应用所有权限列表

adb shell dumpsys package 包名

declared permissions :自定义权限

requested permissions :请求权限

install permissions :安装权限

runtime permissions  : 运行时权限

参考资料:

(三十六) 从dumpsys package看Android权限_JT的专栏-CSDN博客_dumpsys package


用途四:

adb shell dumpsys package queries

管理软件包可见性  |  Android 开发者  |  Android Developers


思路1:查所有应用

adb shell dumpsys package --all-components

思路2:查指定应用

adb shell dumpsys package --all-components <package.name>


版权声明:本文为pwp032984原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。