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

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

因为我想在不同的设备上显示多个应用程序的权限,所以在 Google PlaySettings > Applications manager中查看它们需要太多的手工操作。

98126 次浏览
  1. 列出所有应用程序及其安装路径(如果你只对第三方应用程序感兴趣,请使用 -3标志)。作为一个例子,让我们尝试找出 YouTube 应用程序的权限。
    adb shell pm list packages -f

    产出:

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

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

  3. 列出权限
    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
...

...

快捷方式: 软件包名 | grep 权限

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

要查看 只有被授予的权限(但省略请求但未授予的内容) ,请使用

adb shell dumpsys package packagename

检查输出底部的 grantedPermissions部分。

列出 所有权限(请求但未批准 + 请求和批准) :

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

    adb shell dumpsys package packagename
    

    并从其输出的 codePath元素中获得 APK 路径。

  2. (如果你的设备/模拟器上没有 aapt)你需要从设备/模拟器上取出 apk,正如 Juuso Ohtonen 在他的回答中指出的那样。因此,在桌面上执行这样的操作:

    adb pull /data/app/com.your.package.apk
    
  3. List all permissions of the package

    If missing from device/emulator aapt can be found under build-tools/<version>/in your Android SDK.

    Then execute

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