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

Juu*_*nen 51 permissions android adb aapt android-permissions

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

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

Den*_*hev 70

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

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

adb shell dumpsys package packagename
Run Code Online (Sandbox Code Playgroud)

并检查 grantedPermissions输出底部的部分.

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

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

    adb shell dumpsys package packagename
    
    Run Code Online (Sandbox Code Playgroud)

    codePath从其输出的元素获取APK路径.

  2. (如果aapt你的设备/模拟器上没有)你需要从设备/模拟器中拉出apk,就像Juuso Ohtonen在他的回答中指出的那样.所以从桌面执行类似的操作:

    adb pull /data/app/com.your.package.apk
    
    Run Code Online (Sandbox Code Playgroud)
  3. 列出程序包的所有权限

    如果您的Android SDK中aapt找不到设备/模拟器中的丢失build-tools/<version>/.

    然后执行

    aapt d permissions /path/to/com.your.package.apk
    
    Run Code Online (Sandbox Code Playgroud)


Juu*_*nen 15

  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
    ...
Run Code Online (Sandbox Code Playgroud)

...

  • @DenisKniazhev adb shell 中没有提供 `aapt` 工具 (2认同)

小智 12

快速方式:adb shell dumpsys包packagename | grep权限

  • 在 Windows 机器上使用:`adb shell "dumpsys package packagename | greppermission"` (3认同)
  • 这只会列出已授予的权限,请参阅下面的我的答案 (2认同)