已Root的WearOS设备调用su仍权限被拒,求解决方案
解决方案
检查SU管理器配置
多数Root的WearOS依赖Magisk这类SU管理器,先确认SU管理器正常运行:- 通过
adb shell su手动验证Root权限是否可用,若弹出授权请求则说明SU管理器正常。 - 打开SU管理器,找到你的测试应用,设置为自动授权或手动授予Root权限,避免应用调用su时无授权入口。
- 通过
指定su的完整路径调用
系统PATH可能未包含/system/xbin,导致直接调用su找不到可执行文件,修改代码为:val su = Runtime.getRuntime().exec("/system/xbin/su") val outputStream = DataOutputStream(su.outputStream)可先通过
adb shell echo $PATH确认/system/xbin是否在PATH列表中。临时关闭SELinux
SELinux可能拦截应用对su的调用,执行以下命令临时关闭(重启后恢复):adb shell setenforce 0此操作仅适合原型测试场景,生产环境不建议使用。
临时调整应用权限(风险较高,仅测试用)
若应用UID不在允许调用su的用户组,可尝试:- 通过
adb shell ps | grep com.your.package.name获取应用的运行UID/GID - 执行命令调整应用目录权限:
adb shell chown root:shell /data/app/com.your.package.name-*/base.apk adb shell chmod 777 /data/app/com.your.package.name-*/base.apk
调整后重启应用测试。
- 通过
替代方案:直接通过adb执行Root命令
原型测试阶段可绕过应用内su调用,直接用adb执行需要的Root操作:adb shell su -c "your_root_command_here"
内容的提问来源于stack exchange,提问作者penitent_tangent
相关产品推荐
相关产品推荐

