React-Native AsyncStorage 使用 iPhone 模拟器将数据保存在磁盘上的啥位置?

Posted

技术标签:

【中文标题】React-Native AsyncStorage 使用 iPhone 模拟器将数据保存在磁盘上的啥位置?【英文标题】:Where does React-Native AsyncStorage save data on disk using iPhone Simulator?React-Native AsyncStorage 使用 iPhone 模拟器将数据保存在磁盘上的什么位置? 【发布时间】:2017-06-06 10:36:26 【问题描述】:

使用 ios Simulator,React-Native AsyncStorage 将数据保存在磁盘的什么地方?

我正在使用 IOS Simulator 10.0 版并运行 IOS 10.2 和 react-native 0.40.0

【问题讨论】:

【参考方案1】:

React Native 异步存储数据位于应用程序沙箱的 Documents 文件夹中。对于 react-native 0.40.0,它是 Documents/RCTAsyncLocalStorage_V1/manifest.json

iOS 模拟器 (Xcode 8.2) 的沙盒文件夹路径为:~/Library/Developer/CoreSimulator/Devices/DEVICE_ID/data/Containers/Data/Application/APP_ID

要查找DEVICE_ID,您可以从终端使用xcrun simctl list。 由于您的应用程序在每次运行时都会获得新的APP_ID,因此您很难找到它。我简单地列出了应用程序中的所有文件并获得最新更新。请参阅Xcode 6 keeps renaming my app's directory in iOS8 simulator after each run. 和相关的其他解决方案。

【讨论】:

谢谢!为了找到我的APP_ID,我使用了以下解决方案之一:superuser.com/questions/147027/… 来确定它是哪一个。 有没有办法为 AsyncStorage 设置其他位置?因为我希望 DocumentDir 文件夹可以通过 itunes 与用户共享,并且我将一些登录详细信息保存到 AsyncStorage 中,所以我希望我的应用用户看到它的最后一件事。 这可能有点晚了 - 但对于@AmitBravo - 不要在 AsyncStorage 中存储任何敏感信息。将敏感信息存储在钥匙串 (github.com/oblador/react-native-keychain) 中 - 将其他所有内容存储在 AsyncStorage 中。 如果有人只对预览存储的数据感兴趣,以下命令将打印在过去一小时内修改过的manifest.json 文件find ~/Library/Developer/CoreSimulator -mtime -1 -name manifest.json -exec cat \; -exec echo \; 您可以根据需要更改-mtime 参数旧文件 要找到设备ID,运行模拟器,然后运行xcrun simctl list | grep Booted【参考方案2】:

根据其他有用的 cmets 和答案,让我总结一下如何检查 AsyncStorage:

首先,cd 进入 Async 目录。

cd `xcrun simctl get_app_container booted $BUNDLE_ID data`/Documents/RCTAsyncLocalStorage_V1

然后查看清单:

jq < manifest.json

然后在清单中漂亮地打印一个非空值:

jq '."somekey"|fromjson' < manifest.json

对于null 值,找到具有该值的文件:

md5 -s "otherkey"
# 90f5ba064f8280d4c94b1f0b1a85a79e

然后漂亮地打印该文件:

jq < 90f5ba064f8280d4c94b1f0b1a85a79e

我也在gist分享了这个

【讨论】:

以上是关于React-Native AsyncStorage 使用 iPhone 模拟器将数据保存在磁盘上的啥位置?的主要内容,如果未能解决你的问题,请参考以下文章

React-Native AsyncStorage 使用 iPhone 模拟器将数据保存在磁盘上的啥位置?

React Native使用AsyncStorage本地持久化

对react native 的AsyncStorage 进行小型封装

在本机反应中擦除 AsyncStorage

React-native:下载并解压大型语言文件。

反应本机同步存储与 AsyncStorage