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本地持久化