有没有办法在iOS模拟器上查看文件系统?

Chr*_*ams 163 iphone nsfilemanager ios

有没有办法浏览当前正在运行或刚刚杀死的iOS模拟器的文件系统?如果有办法,我会满足于能够看到特定应用程序的文件.

请注意,我不想以编程方式执行此操作.我想在Finder中查看/打开文件.

Ken*_*ner 219

更新:从iOS 8开始:

〜/资源库/开发/ CoreSimulator /设备

过去的位置是:

〜/ Library/Application Support/iPhone Simulator

它有你运行的所有模拟器模型(4.0,4.1,5.0等)的目录,转到你在Xcode中运行的模拟器.

进入文件夹后,转到"应用程序",选择显示文件日期的"查找程序​​"选项,然后按日期排序.您的应用程序将是最新的,因为它只是更改了目录...

目录中包含与您的应用程序相关的所有内容.您甚至可以在运行之间删除文件,以恢复到已知状态的存储数据库,例如......

我经常去那里我将iPhone模拟器目录保存在我的Finder侧栏中.

请注意,对于iOS8,模拟器文件夹位于完全不同的目录中 - 实际上分成几个目录,每次运行应用程序时,应用程序特定文件的文件夹名称都会更改.

  • 要在Lion中查看〜/ Library文件夹,您需要在终端中运行此命令:chflags nohidden~/Library / (20认同)
  • 对于赶时间的人:cd~/Library/Application\Support/iPhone\Simulator (13认同)
  • 您也可以在查看Finder的"Go"菜单时按下选项键 (9认同)
  • 在随机散列之间查找特定应用程序的文件几乎是不可能的,使用此命令实际获取应用程序的文件:`xcrun simctl get_app_container booted my.app.id data` (7认同)
  • 我使用Finder的⌘⇧G.它比打开终端更快. (3认同)
  • 按住"选项"并在取景器中的菜单栏中点击"开始" (3认同)

Moh*_*sen 76

iOS 8

设备

~/Library/Developer/CoreSimulator/Devices
Run Code Online (Sandbox Code Playgroud)

应用

~/Library/Developer/CoreSimulator/Devices/{{Device Code}}/data/Containers/Bundle/
Run Code Online (Sandbox Code Playgroud)

  • 要确定当前的`{{Device Code}}}`,一种简单的方法是在Xcode中打开所需的模拟器,然后在Finder中按`Date Modified`排序`〜/ Library/Developer/CoreSimulator/Devices /`目录.最近的是你想要的那个. (7认同)
  • 对于应用程序数据:〜/ Library / Developer / CoreSimulator / Devices / {{Device Code}} / data / Containers / Data / Application / {{Application ID}} (2认同)

Vik*_*ica 27

打开程序"活动监视器",搜索您的应用程序(只是应用程序名称,而不是模拟器),单击"信息"并打开"打开文件和端口".复制第二个条目(类似于/Users/me/Library/Application Support/iPhone Simulator/4.2/Applications/B97A9504-0FA5-4826-BB6D-A2335A676459/VSGradientView.app/YourApp).这是正在运行的应用程序,<...>/B97A9504-0FA5-4826-BB6D-A2335A676459/VSGradientView.app/而是捆绑包和<...>/B97A9504-0FA5-4826-BB6D-A2335A676459/*沙盒文件夹.

如果您将此传递open "/Users/me/Library/Application Support/iPhone Simulator/4.2/Applications/B97A9504-0FA5-4826-BB6D-A2335A676459/"给终端,该文件夹将在Finder中打开.

听起来很复杂但不是.


Tun*_*Fam 18

简单。快速。Xcode 10+。

  1. 使用print(NSHomeDirectory())复制路径。
  2. 打开Finder应用程序,然后按Shift+Cmd+G
  3. 粘贴复制的路径,然后按GO

1.的替代方法是捕获一个断点并po NSHomeDirectory()在控制台中执行。


Vas*_*huk 17

基于zsero回答

细节

macOS 10.13.1

在终端中运行以下行

模板

open `xcrun simctl get_app_container booted BUNDLEID_OF_YOUR_APP data` -a Finder
Run Code Online (Sandbox Code Playgroud)

完整样本

open `xcrun simctl get_app_container booted com.Test data` -a 
Run Code Online (Sandbox Code Playgroud)

BUNDLEID_OF_YOUR_APP ???

BUNDLEID_OF_YOUR_APP ="捆绑标识符"

在此输入图像描述

结果

在此输入图像描述


dee*_*ame 9

有一个漂亮的应用程序也支持XCode 6模拟器.

https://github.com/somegeekintn/SimDirs

很棒,用它!


hyp*_*not 7

如果要自动获取位置或在脚本中使用该文件夹,则可以使用以下命令从运行的模拟器中获取精确位置:

xcrun simctl get_app_container booted my.app.id data
Run Code Online (Sandbox Code Playgroud)


l -*_*c l 6

对于 Swift 4.2 及更高版本,打印一个易于使用的路径:

\n
#if targetEnvironment(simulator)\n    print("::::: SIMULATOR :::::")\n    if let documentsPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.path {\n        print("App Documents Directory:\\n\\(documentsPath)\\n")\n    }\n#endif\n
Run Code Online (Sandbox Code Playgroud)\n

...在源代码位置,例如:

\n
func application(\n    _ application: UIApplication, \n    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?\n) -> Bool {\n    // ...\n    return true\n}\n
Run Code Online (Sandbox Code Playgroud)\n

在终端命令行上使用生成的路径或cdopen或者,将路径粘贴到shift-cmd-G“转到文件夹\xe2\x80\xa6”Finder 提示中。

\n

相关答案包括较旧的语言版本:Document Directory Path of iOS 8 Beta Simulator

\n


Muh*_*man 5

首先,从终端获取带有设备 ID 的模拟器列表

  1. 仪器 -s 设备
  2. xcrun simctl 列表

然后将设备 ID 放在路径下方。您将获得特定的模拟器文件系统 ~/Library/Developer/CoreSimulator/Devices/{{deviceID}}