gkd adb 授权失败:写入安全设置权限授予报错的处理
走高级授权的手动方式时,需要在电脑上用 adb 给 GKD 授予写入安全设置权限。这一步报「权限不够」是高频问题,官方 FAQ 专门给了解法。
命令与报错
要执行的命令:
adb shell pm grant li.songe.gkd android.permission.WRITE_SECURE_SETTINGS
部分设备执行时抛出 SecurityException,报错关键词是 grantRuntimePermission: Neither user 2000 nor current process has android.permission.GRANT_RUNTIME_PERMISSIONS——意思是 shell 用户没有被授予管理运行时权限的能力。参考 Shizuku 官方文档的方案,这是厂商系统加了限制,需要在开发者选项里解除。
各品牌的解除方法
| 系统 | 操作 |
|---|---|
| HyperOS / MIUI(小米、POCO) | 开发者选项中开启「USB 调试(安全设置)」——注意不是「USB 调试」 |
| ColorOS(OPPO、一加) | 开发者选项中关闭「权限监控」(或打开「禁止权限监控」) |
| Flyme(魅族) | 开发者选项中关闭「Flyme 支付保护」 |
解除限制后重新执行命令即可成功。
小米的补充说明
官方特别注明:如果开启「USB 调试(安全设置)」后仍然报错,可以尝试在 adb 命令前加 sudo 提升权限后再执行。
「USB 调试(安全设置)」是个容易被忽略的开关——它和普通的「USB 调试」是两项独立设置,后者只管连接,前者才授权修改安全设置。授权写入安全设置权限恰好需要后者。
排查顺序建议
- 确认用的命令是
pm grant li.songe.gkd android.permission.WRITE_SECURE_SETTINGS,包名没写错; - 确认设备已开启「USB 调试(安全设置)」或对应品牌的限制已关;
- 换数据线 / 换 USB 口排除连接不稳(报错若变成 device offline 是连接问题,不是权限问题);
- 仍不行就换路:用 Shizuku 授权(见Shizuku 进阶),不用碰 adb。
授权成功的验证
命令执行成功没有输出即为成功。回到 GKD 授权状态页,高级授权一项应显示已获得;此后无障碍开关由应用自行控制,adb 这条路就完成使命了。