通过adb列出Android应用程序的权限

通过adb列出Android应用程序的权限,android,permissions,adb,android-permissions,aapt,Android,Permissions,Adb,Android Permissions,Aapt,使用adb,我如何找出Android应用程序需要哪些权限 因为我想在不同的设备上显示多个应用程序的权限,在googleplay或Settingsapplications manager中查看它们需要太多的手动工作 列出所有应用程序及其安装路径(如果您只对第三方应用程序感兴趣,请使用-3标志)。举个例子,让我们试着找出YouTube应用程序的权限 adb壳牌项目管理列表包-f 输出: … 软件包:/data/app/com.google.android.youtube-1.apk=com.goog

使用adb,我如何找出Android应用程序需要哪些权限

因为我想在不同的设备上显示多个应用程序的权限,在
googleplay
Settings
applications manager
中查看它们需要太多的手动工作

  • 列出所有应用程序及其安装路径(如果您只对第三方应用程序感兴趣,请使用
    -3
    标志)。举个例子,让我们试着找出YouTube应用程序的权限
    adb壳牌项目管理列表包-f


    输出:


    软件包:/data/app/com.google.android.youtube-1.apk=com.google.android.youtube

  • 从设备中拉出选定的apk:
    adb pull/data/app/com.google.android.youtube-1.apk

  • 使用
    aapt d permissions com.google.android.youtube-1.apk

  • 输出:

        uses-permission: android.permission.BROADCAST_STICKY
        uses-permission: android.permission.CALL_PHONE
        uses-permission: android.permission.CALL_PRIVILEGED
        uses-permission: android.permission.WRITE_SETTINGS
        uses-permission: android.permission.WRITE_SECURE_SETTINGS
        uses-permission: android.permission.READ_CONTACTS
        uses-permission: android.permission.READ_CALL_LOG
        uses-permission: android.permission.WRITE_CONTACTS
        uses-permission: android.permission.WRITE_CALL_LOG
        uses-permission: android.permission.SYSTEM_ALERT_WINDOW
        uses-permission: android.permission.INTERNAL_SYSTEM_WINDOW
        uses-permission: android.permission.ADD_SYSTEM_SERVICE
        uses-permission: android.permission.VIBRATE
        uses-permission: android.permission.BLUETOOTH
        uses-permission: android.permission.BLUETOOTH_ADMIN
        uses-permission: android.permission.REORDER_TASKS
        uses-permission: android.permission.CHANGE_CONFIGURATION
        ...
    

    快捷方式:
    adb shell dumpsys package packagename | grep permission

    我只是想将Jason和Juuso的答案结合在一起,注意前者列出了授予的权限,而后者列出了请求的权限(包括授予的权限)

    要仅查看已授予的权限(但忽略已请求但未授予的权限),请使用

    并检查输出底部的
    grantedpowpermissions
    部分

    要列出所有权限(已请求但未授予+已请求和已授予):

  • 注意包的APK。您可以运行相同的命令

    adb shell dumpsys package packagename
    
    并从其输出的
    codePath
    元素中获取APK路径

  • (如果设备/仿真器上没有
    aapt
    ),您需要从设备/仿真器中提取apk,正如Juuso Ohtonen在回答中指出的那样。因此,在桌面上执行如下操作:

    adb pull /data/app/com.your.package.apk
    
  • 列出包的所有权限

    如果设备/仿真器
    aapt
    中缺少,可以在Android SDK中的
    build tools/
    下找到

    然后执行

    aapt d permissions /path/to/com.your.package.apk
    

  • 回答很好,但为什么需要第二步?没有它,它可以正常工作。@DenisKniazhev
    aapt
    工具未在adb中提供shell@coco_你说得对,我一定是在使用预装了
    aapt
    的仿真器。这将只列出已授予的权限,请参见下面的我的答案。它不只是包括带有“pemission”一词的权限吗在Windows机器上使用:
    adb shell“dumpsys-package-packagename | grep-permission”
    例如,我注意到“adb-shell-dumpsys-package”命令显示了有关应用程序的多种信息。它还可以显示应用程序正式使用的所有文件夹,例如外部存储(在我的设备上的“/storage/emulated/0/Android/data/PACKAGE_NAME”)?Grep highlighting是你的朋友这里
    adb shell dumpsys PACKAGE com.example | Grep--color-E“grated=true |$”
    aapt d permissions /path/to/com.your.package.apk