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

adb run-as执行cp复制及单命令编辑文件报错问题咨询

报错核心原因
  • 带重定向符号的命令直接跟在run-as后执行时,重定向操作由调用run-as的默认shell(shell身份,无应用私有目录权限)执行,而非切换到应用身份后执行,因此触发权限拒绝。
  • Android 10及以上版本默认启用分区存储,即便是debuggable应用,切换身份后也不具备外置公共存储根目录的直接写入权限,直接执行cp命令写入公共存储会触发操作不允许报错。Android Studio的文件传输走调试守护进程的专用通道,不依赖普通shell的文件系统权限,因此可以正常操作。
单条命令实现方案

私有目录文件编辑

通过sh -c把包含重定向的完整操作包裹,确保所有操作都在应用身份的shell上下文中执行:

# 写入内容到应用私有配置文件示例
adb shell "run-as app sh -c 'echo test > /data/user/0/app/shared_prefs/app_preferences.xml'"

读取私有文件到本地电脑可直接执行:

adb shell "run-as app cat /data/user/0/app/shared_prefs/app_preferences.xml" > ./local_backup.xml

双向文件拷贝

绕开直接文件复制的权限限制,通过shell标准流做中转实现,不需要提前申请额外存储权限:

  • 应用私有目录文件导出到电脑本地:
adb exec-out run-as app cat /data/data/app/shared_prefs/app_preferences.xml > ./local_preferences.xml
  • 电脑本地文件导入到应用私有目录:
# 第一步:把本地文件推送到设备临时目录
adb push ./local_target_file.xml /data/local/tmp/
# 第二步:通过流中转写入应用私有目录
adb shell "run-as app sh -c 'cat /data/local/tmp/local_target_file.xml > /data/data/app/shared_prefs/app_preferences.xml'"
# 第三步:清理临时文件
adb shell rm /data/local/tmp/local_target_file.xml
  • 应用私有目录文件拷贝到设备外置公共存储:
# 建议选择Download等系统授权可写的公共子目录,不要直接写入存储根目录
adb shell "run-as app cat /data/data/app/shared_prefs/app_preferences.xml > /storage/emulated/0/Download/app_preferences.xml"

提示:操作时把命令里的app替换成实际的应用包名,路径对应调整成实际目标路径即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:12:20