使用 adb,我如何找出 Android 应用程序需要哪些权限?
因为我想在不同的设备上显示多个应用程序的权限,所以在 Google Play或 Settings > Applications manager中查看它们需要太多的手工操作。
Google Play
Settings
Applications manager
列出所有应用程序及其安装路径(如果你只对第三方应用程序感兴趣,请使用 -3标志)。作为一个例子,让我们尝试找出 YouTube 应用程序的权限。 adb shell pm list packages -f 产出:
-3
adb shell pm list packages -f
... 包:/data/app/com.google.android.youtube-1. apk = com.google.android.youtube ...
从设备中拉出选定的 apk: adb pull /data/app/com.google.android.youtube-1.apk
adb pull /data/app/com.google.android.youtube-1.apk
列出权限 aapt d permissions 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 ...
...
快捷方式: 软件包名 | grep 权限
我只是想把 Jason 和 Juuso 的答案结合在一起,注意到前者列出的权限是 同意,而后者列出的权限是 请求(包括被授予的权限)。
要查看 只有被授予的权限(但省略请求但未授予的内容) ,请使用
adb shell dumpsys package packagename
检查输出底部的 grantedPermissions部分。
grantedPermissions
列出 所有权限(请求但未批准 + 请求和批准) :
注意包的 APK。您可以运行相同的命令
并从其输出的 codePath元素中获得 APK 路径。
codePath
(如果你的设备/模拟器上没有 aapt)你需要从设备/模拟器上取出 apk,正如 Juuso Ohtonen 在他的回答中指出的那样。因此,在桌面上执行这样的操作:
aapt
adb pull /data/app/com.your.package.apk
List all permissions of the package
If missing from device/emulator aapt can be found under build-tools/<version>/in your Android SDK.
build-tools/<version>/
Then execute
aapt d permissions /path/to/com.your.package.apk