有办法在iOS模拟器上看到文件系统吗?

是否有任何方法可以浏览当前运行或刚刚关闭的iOS模拟器的文件系统?如果有办法的话,我希望能够看到特定应用程序的文件。

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

104824 次浏览

更新:自iOS 8:

~ /图书馆/开发/ CoreSimulator /设备

以前的位置是:

~/库/应用程序支持/iPhone模拟器

它有你曾经运行过的所有模型模拟器(4.0,4.1,5.0等)的目录,去你在Xcode中运行的那个。

进入文件夹后,转到应用程序,选择显示文件日期的Finder选项,并按日期排序。您的应用程序将是最新的,因为它刚刚更改了目录…

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

我经常去那里,我把iPhone模拟器目录放在Finder侧栏里。

注意,在iOS8系统中,模拟器文件夹在一个完全不同的目录中——实际上是分开在几个目录中,应用程序特定文件的文件夹名称在每次运行应用程序时都会改变。

打开“Activity Monitor”程序,搜索你的App(只需要App名称,不需要模拟器),点击“information”,打开“Open files and ports”。复制第二个条目(类似/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中打开。

听起来很复杂,但事实并非如此。

iOS 8

设备

~/Library/Developer/CoreSimulator/Devices

应用程序

~/Library/Developer/CoreSimulator/Devices/\{\{Device Code}}/data/Containers/Bundle/

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

https://github.com/somegeekintn/SimDirs < a href = " https://github.com/somegeekintn/SimDirs " > < / >

这是很棒的,使用它!

旧帖子,但我认为值得一提的是SimPholders找到你的模拟器文件。它是一个菜单栏项,跟踪模拟器应用程序,并让您直接进入它们的文件夹和内容。超级棒。

(原始答案:https://stackoverflow.com/a/26557165/377384)

在Xcode Version 8.2.1 (8C1002)上,我发现模拟器上安装的.app文件在这个路径:~/Library/Developer/Xcode/DerivedData/[APPNAME]-[RANDOM HASH]/Build/Products/Debug-iphonesimulator

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

xcrun simctl get_app_container booted my.app.id data

基于zsero的答案

细节

macOS 10.13.1

解决方案1

在终端中运行以下行

模板

open `xcrun simctl get_app_container booted BUNDLEID_OF_YOUR_APP data` -a Finder

完整的样品

open `xcrun simctl get_app_container booted com.Test data` -a Finder

BUNDLEID_OF_YOUR_APP ? ?

Bundle Identifier"

enter image description here

解决方案的特点

  • 打开文件获取应用程序模拟器目录

解决方案2

创建一个带有应用程序和代码名称的bash脚本:

script_file_name = `basename "$0"`
open `xcrun simctl get_app_container booted $script_file_name data`

enter image description here

解决方案的特点2

  • 打开文件获取应用程序模拟器目录
  • 重命名文件以获得另一个应用程序模拟器目录

结果

enter image description here

基于@zsero的答案,我做了一个简短的bash脚本,直接打开你的应用程序id的模拟器文件夹。非常方便!

openappfolder.sh

#!/bin/bash


APPID=$1
if OUTPUT=`xcrun simctl get_app_container booted $APPID data` ; then
open $OUTPUT
else
echo "$APPID not found!"
fi 2>/dev/null

那就

openappfolder.sh com.bundle.id

👍

一件容易的事。快。Xcode 10 +。

  1. 使用print(NSHomeDirectory())复制作为路径。
  2. 打开 app,按Shift+Cmd+G
  3. 粘贴复制路径并按

替代1。是捕获断点并在控制台执行po NSHomeDirectory()

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

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

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

func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
// ...
return true
}

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

相关答案,包括旧语言版本:iOS 8 Beta模拟器的文档目录路径

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

  1. 仪器-s设备
  2. xxrun simctl list

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