Flutter应用中shared_preferences文件在Android与iOS平台的存储位置咨询
嗨,这个问题我刚好熟,给你分平台捋清楚具体位置,方便你找到对应的文件查看存储的键值对:
Android 平台
Flutter的shared_preferences在Android上是直接封装了原生的SharedPreferences,所以存储文件是XML格式的,具体位置分两种情况:
模拟器/已Root的真机
直接通过文件路径访问:
/data/data/<你的应用包名>/shared_prefs/<你的应用包名>_preferences.xml
注意:把
<你的应用包名>替换成你项目里的实际包名(比如com.example.my_flutter_app),可以在android/app/src/main/AndroidManifest.xml里找到这个包名。
- 快速访问方式:用Android Studio自带的Device File Explorer(右侧边栏就能找到),直接导航到上述路径,找到对应的XML文件后,右键选择“Save As”导出到本地就能查看里面的键值对了。
未Root的普通真机
因为Android的沙盒权限限制,你没法直接访问/data目录,这时候可以用两种方法:
- 用Android Studio的Device File Explorer,找到目标XML文件后,点击顶部的
Pull a file from the device按钮(向下箭头图标),把文件导出到本地查看; - 用adb命令备份应用数据,再提取文件:
执行后会生成一个adb backup -noapk <你的应用包名>backup.ab文件,你可以用工具把它转成ZIP格式,解压后就能在apps/<你的应用包名>/sp/路径下找到对应的XML文件。
iOS 平台
iOS上shared_preferences封装的是原生的NSUserDefaults,存储文件是PLIST格式,位置同样分模拟器和真机:
iOS 模拟器
文件路径如下:
~/Library/Developer/CoreSimulator/Devices/<设备UUID>/data/Containers/Data/Application/<应用UUID>/Library/Preferences/<你的应用包名>.plist
- 找
设备UUID:打开Xcode,点击顶部菜单Window > Devices and Simulators,选中你正在使用的模拟器,右侧的Identifier就是UUID; - 找
应用UUID:那个目录下的文件夹都是随机字符串命名的,可以通过文件夹的创建时间(对应你安装应用的时间)来判断,或者直接用终端命令快速搜索:
执行后会直接返回对应的plist文件路径,复制路径到Finder里打开就行。find ~/Library/Developer/CoreSimulator -name "<你的应用包名>.plist"
iOS 真机
同样因为沙盒机制,没法直接访问文件系统,步骤如下:
- 打开Xcode,点击
Window > Devices and Simulators; - 选中你的真机设备,在“Installed Apps”里找到你的Flutter应用;
- 点击应用条目下方的
Download Container,把应用的沙盒数据下载到本地(会得到一个.xcappdata文件); - 右键点击这个
.xcappdata文件,选择Show Package Contents; - 导航到
Library/Preferences目录,就能找到你的应用包名对应的.plist文件,打开就能看到存储的键值对了。
最后提个小提醒:不管是Android还是iOS,只有当你的应用至少运行过一次,并且调用了shared_preferences的写入操作后,对应的文件才会被创建哦,如果没找到文件,先确认应用有没有执行过存储操作~




