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

Flutter中Shared Preferences在Android设备的存储位置及外部访问方法

Android Flutter应用Shared Preferences存储位置与离线获取方法

一、Shared Preferences的物理存储路径

Flutter应用的Shared Preferences数据并非存在Android/data目录,而是存储在应用的私有沙箱目录中:

  • 完整路径:/data/data/<你的应用包名>/shared_prefs/
  • 文件名格式:通常为<你的应用包名>_preferences.xml
  • 无法通过普通文件管理器查看的原因:该目录属于应用私有存储区,Android 11+系统进一步限制了外部访问权限,非Root设备的普通文件管理器无权限进入。

二、不通过应用本身获取Shared Preferences文件的方法

1. 调试自己的开发设备(无需Root)

利用adb工具即可导出文件:

  • 步骤1:连接设备到电脑,确保开启USB调试
  • 步骤2:执行命令直接导出(若有权限问题则用步骤3):
    adb pull /data/data/<你的应用包名>/shared_prefs/<你的应用包名>_preferences.xml ./本地保存路径
    
  • 步骤3:权限受限情况下的迂回方案:
    # 进入应用沙箱
    adb shell run-as <你的应用包名>
    # 将文件复制到外部存储
    cp shared_prefs/<你的应用包名>_preferences.xml /sdcard/
    # 退出沙箱后拉取到本地
    exit
    adb pull /sdcard/<你的应用包名>_preferences.xml ./本地保存路径
    

2. 获取用户设备上的文件(应用无法启动时)

根据用户设备情况选择方案:

  • 方案A:技术型用户可指导其用adb导出,步骤同上,让用户将导出的文件发送给你
  • 方案B:若用户设备已Root,让其使用带Root权限的文件管理器(如Solid Explorer),直接进入/data/data/<你的应用包名>/shared_prefs/目录复制文件
  • 方案C:提前预防——在应用中加入备份功能,正常运行时将Shared Preferences文件备份到Android/data/<你的应用包名>/files/这类可外部访问的目录,或支持云端备份,后续用户即使无法启动应用,也能从外部存储拿到备份文件

注意事项

  • Android 11及以上版本,发布版应用(android:debuggable="false")无法使用run-as命令,此时非Root设备无法通过adb获取文件,只能依赖用户Root或提前备份
  • 导出的.xml文件为明文存储,直接用文本编辑器即可查看所有键值对

内容的提问来源于stack exchange,提问作者S-Man

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 18:35:14