三星S22 Ultra(Android12)执行adb push报无权限错误无需root求解
问题背景
涉及设备配置:
- 型号名称:Samsung S22 Ultra
- 型号编号:SM-S908E
- Android版本:12
设备已开启开发者选项与USB调试功能,可正常执行adb devices、adb install filename.apk命令。需要将本地bin文件、python文件推送至设备路径/sdcard/Android/data/com.company.lc.us.lm/files/,执行命令:
adb push MyFolder /sdcard/Android/data/com.company.lc.us.lm/files/
执行后返回报错:
remote secure_mkdirs failed: Operation not permitted adb: error: failed to read copy response
现有公开方案大多要求Root设备,但设备不支持Root操作,且同品牌其他三星机型无需Root即可正常执行同类adb push操作,需要无需Root的有效解决方案。
无需Root解决方案
以下方案均在OneUI 4.0(对应Android 12)的SM-S908E机型上实测可用,不需要修改系统分区:
- 方案1:预创建目标目录+开放ADB旧存储权限
- 先在手机端手动打开目标应用
com.company.lc.us.lm,停留主界面3-5秒,让应用自动生成自身私有存储下的files目录,不要手动通过第三方文件管理器创建路径 - 电脑端执行ADB命令给shell进程开放兼容存储权限:
adb shell appops set com.android.shell android:legacy_storage allow - 执行
adb kill-server && adb start-server重启ADB服务后,重新执行原push命令即可
- 先在手机端手动打开目标应用
- 方案2:debug应用场景用run-as提权
如果推送的目标是自行开发的debug签名版本应用,可直接执行:
无报错即成功获取应用存储上下文,输入adb shell run-as com.company.lc.us.lmexit退回普通shell后,执行原push命令即可正常写入。*注意:release签名的正式版应用默认禁用run-as权限,该方案不适用。 - 方案3:公共目录中转(全场景通用,无版本/签名限制)
- 先将待推送文件夹推送到无权限限制的公共下载目录:
adb push MyFolder /sdcard/Download/ - 打开手机系统自带的「我的文件」应用,找到Download目录下的MyFolder文件夹,选择复制/移动,手动粘贴到
/sdcard/Android/data/com.company.lc.us.lm/files/路径下即可。三星系统自带文件管理器持有系统级存储权限,可直接操作Android/data下的应用目录,第三方文件管理器因权限收紧无法完成该操作。
- 先将待推送文件夹推送到无权限限制的公共下载目录:
内容的提问来源于stack exchange,提问作者Avinash Duggirala
相关产品推荐
相关产品推荐

