iPhone模拟器在哪里存储数据?

Cod*_*eef 224 iphone ios-simulator

我有一个用于存储应用程序数据的SQLite数据库,我可以查看它来调试我遇到的问题 - 但iPhone模拟器通常在哪里存储数据?

dsm*_*ger 281

对于SDK 3.2,接受的答案是正确的 - SDK 4 将该路径中的/ User文件夹替换为可以模拟的每个旧版iPhone OS/iOS版本的编号,因此路径变为:

〜/ Library/Application Support/iPhone Simulator/[OS version]/Applications/[appGUID] /

如果您同时安装了以前的SDK,其3.1.x模拟器将继续将其数据保存在:

〜/ Library/Application Support/iPhone Simulator/User/Applications/[appGUID] /

适用于Xcode6和iOS8

〜/库/开发商/ CoreSimulator /设备/ [的DeviceID] /数据/容器/数据/应用/ [的AppID] /

  • 而不是在寻找器中搜索GUID是你的,请注意pisca46的答案如下:只需在调试器中键入`po NSHomeDirectory()`.剪切并粘贴到Go> Go To Folder(Cmd-Shift-G). (159认同)
  • `cd~/Library/Application\Support/iPhone\Simulator /` (6认同)
  • 很难强调更简单,更方便,更不容易出错且更不令人沮丧[这个答案](http://stackoverflow.com/a/23200867/2547229)(正如mackworth上面的评论中所推荐的那样).您可以在`AppDelegate`的`didFinishLaunchingWithOptions:`中向`NSLog`添加一行,或者您可以从调试器中添加'po NSHomeDirectory()`.在任何一种情况下,复制字符串并使用`Cmd + Shift + G`在Finder中打开它.这样做效果更好,因为你用标准命令**而不是需要_know_更改的东西. (3认同)

Ser*_*ost 80

还有另一种(更快?)的方法来查找没有终端的应用数据的位置:

  1. 在模拟器中启动应用程序
  2. 打开活动监视器
  3. 在CPU选项卡中找到您的应用程序的名称
  4. 双击它并打开"打开文件和端口"

在此输入图像描述

  • `NSString *uniqueIdentifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString];` 给你设备标识符 (2认同)

Cod*_*eef 78

找到了:

~/Library/Application Support/iPhone Simulator/User/
Run Code Online (Sandbox Code Playgroud)

  • 如何搜索:**在Finder中按CMD + SHIFT + G** (14认同)
  • 已过时 - 不再起作用 (2认同)

Wag*_*agh 73

iOS 8 ~/Library/Developer/CoreSimulator/Devices/[Device ID]/data/Applications/[appGUID]/Documents /

  • @msmq打开当前的模拟器,硬件 - >设备 - >管理设备... - >在"模拟器"列表中选择您的模拟器.然后右边是"标识符".这是设备ID. (11认同)
  • @msmq试试`xcrun instruments -s` (2认同)

Raf*_*ira 66

在狮子Users/[username]/Library上隐藏着.

要在Finder中查看,请单击屏幕顶部的"开始"菜单,然后按住"alt"键以显示"库".

单击"库",您可以看到以前隐藏的库文件夹.

以前建议:

使用

chflags nohidden /users/[username]/library
Run Code Online (Sandbox Code Playgroud)

在终端中显示文件夹.


Lal*_*hna 41

最简单的方式.

  1. 在某个地方赶上一个断点.

  2. 输入po NSHomeDirectory()控制台窗口

结果:

(lldb)po NSHomeDirectory() /Users/usernam/Library/Developer/CoreSimulator/Devices/4734F8C7-B90F-4566-8E89-5060505E387F/data/Containers/Data/Application/395818BB-6D0F-499F-AAFE-068A783D9753

  • 您甚至可以在不捕获断点的情况下使其变得更容易。暂停程序执行(在调试区域点击暂停),然后在调试导航器中点击 main,然后在 lldb 窗口中执行 `po NSHomeDirectory()`。 (8认同)
  • 如果我早点知道这一点就好了。这应该是正确答案 (4认同)

Pis*_*a46 32

使用Xcode 5,您可以使用以下代码:

#import <Foundation/NSFileManager.h>
Run Code Online (Sandbox Code Playgroud)

和:

NSString *homeDir = NSHomeDirectory();
NSLog(@"%@",homeDir);
Run Code Online (Sandbox Code Playgroud)

结果可能看起来像:

"/Users/<your user name>/Library/Application Support/iPhone Simulator/7.1/Applications/hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhh"
Run Code Online (Sandbox Code Playgroud)

哪个hhhhhhhh-hhhh-hhhh-hhhh-hhhhhhhhhhhh是标识您的iOS应用的十六进制字符串.

  • 这也适用于调试器:`po NSHomeDirectory()` (16认同)

awo*_*olf 30

看起来Xcode 6.0再次移动了这个位置,至少对于iOS 8模拟器而言.

〜/库/开发商/ CoreSimulator /设备/ [的DeviceID] /数据/容器/数据/应用/ [的AppID]

  • 在〜/ Library/Developer/CoreSimulator/Devices/[DeviceID] /还有一个名为"device.plist"的.plist文件,如果你查看里面你可以找到设备名称,如iphone-6或iphone-5s.deviceID非常混乱,所以我认为你应该查看.plist文件. (4认同)

rus*_*hop 30

如果模拟器正在运行,您可以获得任何应用程序容器的路径:

xcrun simctl get_app_container booted <app bundle identifier>
Run Code Online (Sandbox Code Playgroud)

示例输出:

$ xcrun simctl get_app_container booted com.example.app
/Users/jappleseed/Library/Developer/CoreSimulator/Devices/7FB6CB8F-63CB-4F27-BDAB-884814DA6FE0/data/Containers/Bundle/Application/466AE987-76BC-47CF-A207-266E65E7DE0A/example.app
Run Code Online (Sandbox Code Playgroud)

"booted"可以替换simctl为预期设备UDID的任何地方的大多数命令.

您可以查看设备列表,xcrun simctl list并获取有关特定命令的帮助xcrun simctl help.

更新:根据Xcode 8.3中的热门请求,您现在可以通过附加"app","data","groups"或应用程序组标识符来指定所需的容器类型.

要获取数据容器:

$ xcrun simctl get_app_container booted com.example.app data
Run Code Online (Sandbox Code Playgroud)


Shu*_*ndu 29

查找应用程序在模拟器中的位置的最简单方法之一.用户"NSTemporaryDirectory()"

脚步-

  1. 在应用程序的任何位置应用断点并运行应用程序.
  2. 当应用程序在断点处停止时,在Xcode控制台中键入以下命令.

    po NSTemporaryDirectory()

请参阅下图以获得正确的见解在此输入图像描述

现在,您拥有临时文件夹的确切路径.您可以返回并查看所有与应用相关的文件夹.

希望这也有帮助.快乐编码:)


jos*_*ell 10

Xcode 2019+ Catalina 中存放模拟器的地方,Xcode 11.0

运行时

$ open ~/Library/Developer/CoreSimulator/Profiles/Runtimes

例如:iOS 13.0watchOS 6.0到目前为止,这些占用的空间最多。每个可以高达 ~5GB

设备

$ open ~/Library/Developer/CoreSimulator/Devices

例如:iPhone XriPhone 11 Pro Max。这些通常每个 <15 mb。

解释

模拟器分为运行时和设备。如果您运行,$ xcrun simctl list您可以看到概览,但如果您想找到这些模拟器的物理位置,请查看我显示的这些目录。

删除您不支持的运行时是完全安全的。如果需要,您可以稍后重新安装这些。


小智 7

在iOS 5中:

/ Users/[User Name]/Library/Application Support/iPhone Simulator/5.0/Applications/[AppGUID] /


Lem*_*Sun 7

只需这样做.

NSString *docDirPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];
NSLog(@"%@", docDirPath);
Run Code Online (Sandbox Code Playgroud)

你会得到这样的想法:

/用户/管理员/库/开发商/ CoreSimulator /设备/ 58B5B431-D2BB-46F1-AFF3-DFC789D189E8 /数据/集装箱/数据/应用/ 6F3B985F-351E-468F-9CFD-BCBE217A25FB /文档

去那里,无论XCode版本如何,您都会看到应用程序的文档文件夹.(在Finder中使用"转到文件夹..."命令并指定路径"〜/ library").


Dur*_*n.H 6

对于Xcode 4.6,它存储在以下路径中......

/ Users/[currentuser]/Library/Application Support/iPhone Simulator/6.1/Applications /

要以编程方式了解它,请使用以下代码

  NSLog(@"path:%@",[[NSBundle mainBundle]bundlePath]);
Run Code Online (Sandbox Code Playgroud)

  • **Swift**:`print("path:\(NSBundle.mainBundle().bundlePath)")` (2认同)