You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

三星Tab S8无法推送文件至/Android/data/的问题求助

adb push 至三星Tab S8 /sdcard/Android/data/包目录失败的解决方案

问题现象

  • 三星Tab S8(Android 12,One UI 4.1)执行adb push * /sdcard/Android/data/com.xxx.xxx.xxx时,首次推送报错:
    adb: error: failed to copy 'Subfolder/subfile1.txt' to '/sdcard/Android/data/com.xxx.xxx.xxx/Subfolder/subfile1.txt': remote secure_mkdirs failed: Operation not permitted
    
  • 目标目录下子文件夹已创建,但文件未推送成功;二次执行推送则无报错,所有文件推送完成。
  • 同版本系统的Tab S7无此问题。

权限差异分析

  • Tab S8中,/sdcard/Android/data/com.xxx.xxx.xxx下的子文件夹所有者为shell,权限位为rws;Tab S7对应文件夹所有者为应用专属用户u0_xxxx,权限位rwx。
  • 在Tab S8的/sdcard/Android/data下创建的文件夹会自动归属shell用户,且无法通过chmod修改权限。

正式解决方案

方案1:自动化预创建目录结构后推送

将临时方案脚本化,自动完成目录创建与文件推送:

# 本地遍历所有子目录,在设备目标路径预创建
find . -type d ! -name "." | while read dir; do
    adb shell mkdir -p "/sdcard/Android/data/com.xxx.xxx.xxx/$dir"
done
# 执行文件推送
adb push * /sdcard/Android/data/com.xxx.xxx.xxx

方案2:tar打包推送后解压(适配可调试应用)

通过打包文件并在应用用户上下文解压,确保权限匹配:

  1. 本地打包文件:
    tar -czf temp.tar.gz ./*
    
  2. 推送压缩包至设备临时目录:
    adb push temp.tar.gz /sdcard/temp/
    
  3. 切换到应用用户权限解压(需应用为可调试状态):
    adb shell run-as com.xxx.xxx.xxx tar -xzf /sdcard/temp/temp.tar.gz -C /sdcard/Android/data/com.xxx.xxx.xxx/
    
  4. 清理临时文件:
    adb shell rm /sdcard/temp/temp.tar.gz
    rm temp.tar.gz
    

方案3:临时目录中转后移动文件

利用设备内文件移动规避跨用户权限冲突:

  1. 推送文件至设备临时目录:
    adb push * /sdcard/temp/
    
  2. 移动文件至目标目录:
    adb shell mv /sdcard/temp/* /sdcard/Android/data/com.xxx.xxx.xxx/
    
  3. 清理临时目录:
    adb shell rm -rf /sdcard/temp/
    

补充说明

该问题源于三星Tab S8在One UI 4.1中对/sdcard/Android/data目录的权限管控升级,adb push创建子目录时使用的shell用户与应用专属用户权限冲突,导致首次推送失败。上述方案均通过规避权限冲突场景解决问题。

内容的提问来源于stack exchange,提问作者Neil Steven

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 12:21:28