我该如何向iOS模拟器中添加文件?

70

请问有人能告诉我如何将文件添加为模拟器上传的测试文件吗?

我将一个PDF文件拖到了模拟器上,但只得到了这个结果。无法点击添加按钮。

“添加项”对话框的屏幕截图


1
点击“我的iPhone”将文件添加到模拟设备上的文件中。或者您可以使用iCloud帐户登录(我建议使用测试帐户),然后iCloud存储可用。 - russbishop
20个回答

64

由于在iOS 13/Xcode 11模拟器上,我尝试从Finder中拖入文件来添加,但却总是出现错误,因此给出的解决方案都不适用于我,所以我找到了一个变通方法。

这需要一开始进行一些设置,但您将从Finder中免费访问实际文件夹。

当我将文件拖到模拟器中(假设没有其他应用程序处理该文件),Files应用程序将会打开,但保存时会出现“无效参数错误”。

解决方案:

模拟器中名为“On my phone”的文件夹被称为“File Provider Storage”。目标是在Finder中找到它。

完整路径:

username/Library/Developer/CoreSimulator/Devices/device_hash_folder/data/Containers/Shared/AppGroup/hash_folder/File Provider Storage/

(注意:
截至当前版本(13.1),模拟器无法选择文件。您可以看到文件,但单击时不会发生任何事情。)

以下是步骤:

  1. 在模拟器上打开“文件”应用程序,然后导航到“我的 iPhone”文件夹。
  2. (仍在模拟器中)创建一个具有唯一名称的文件夹。
    2a. 您需要向下拖动屏幕以显示“...”按钮。单击该按钮将为您提供创建新文件夹的选项。

从这里有两种方法

简短方法:

(在Finder中)
3a. 导航到:username/Library/Developer/Core Simulator/Devices.
3b. 搜索您创建的文件夹。它应该在“文件提供者存储”中。 这是“我的 iPhone”文件夹。

如果由于任何原因搜索未找到:

3a. 运行应用并打印(来自Xcode)documentDirectory的路径(使用FileManager)。
3b. 在Finder中打开它并导航回“容器文件夹”。
3c. 导航到Shared/AppGroup.
3d. 您要查找Shared/AppGroup/some_hashFolder/File Provider Storage/your_folder.
3e. 要么查找修改日期(已创建的文件夹)或搜索文件夹名称。


5
我使用了CSV文件,它已经出现在页面上,但无法点击。当我从“文件”应用程序中点击时没有反应。当我在我的应用程序中使用UIDocumentPickerDelegate点击它时也没有反应(iOS 13.1)。 - Ben Noland
4
很遗憾,我也是这样。它可以在真实设备上运行,但不能在模拟器上运行。虽然我找到了一种添加文件的方法,但似乎模拟器不支持这种交互方式。这太糟糕了。 - bauerMusic
1
@finalpets 或者,您可以打开“前往”菜单(从Finder中),并按住“选项”键,库将出现。从那里,您可以自由浏览。我认为它并不真正“隐藏”。隐藏文件以'.'作为第一个字符。我猜隐藏库是Finder首选项设置。 - bauerMusic
1
这应该是最佳答案。几个注意事项。对我来说,CoreSimular是一个没有空格的单词。即 /Users/xxxx/Library/Developer/CoreSimulator/Devices/2FAE1010-A0DC-42E5-98B4-899B86FD6A10/data/Containers/Shared/AppGroup/E92C52DF-233E-435F-A957-62F3B4FA2565/File Provider Storage/MyNewUploadsFolder - Arvind K.
3
可以通过名称进行文件夹搜索。例如,我执行了以下命令:find /Users/xxxx/Library/Developer/CoreSimulator/Devices/ -name "MyNewUploadsFolder" 来查找文件夹路径。 - Arvind K.
显示剩余9条评论

32

更新的答案:
由于Xcode 11 / SDK 13,无论什么原因拖动文件到模拟器上都不起作用。 您可以通过终端使用xcrun simctl addmedia <device> <path>发送媒体文件(jpg,png,mov等)。

因此,这个命令将不加任何问题地将图像直接添加到照片应用程序中:

xcrun simctl addmedia booted pic.001.jpg <== booted is the current running simulator. 

在我的情况下,我想发送根证书以允许连接到本地服务器,但使用addmedia无法实现。解决方法是强制模拟器使用Safari导航到.cer文件的完整macOS本地路径。

xcrun simctl openurl booted 'file:///Users/my.user/Desktop/my.cer'

事实证明,在Safari中启动并在地址栏中键入file:///Users/my.user/Desktop/my.cer也可以使用。对于PDF和其他类型文件可以使用此方法。

原始回答:
在XCode 9模拟器中,如果是图像/视频,只需将其拖到模拟器上。它会将其添加到照片应用程序中。其他类型的文件似乎会随机打开文件浏览器并通常失败:P。


4
这绝对是最好的答案。对我来说只使用pdf就有效了。 - jem
这个之前一直很好用,但是自从xcode11/ios13以后,似乎就不行了——没有错误,但是也没有文件。我通过iCloud传输了根证书,这比处理其他答案中的finder路径要容易些。 - joe
在Xcode 12,iOS 14上:它刚刚成功地将一张图片添加到了照片应用程序中,“xcrun simctl addmedia Booted 20200913_130141.jpg”,不确定为什么你的Joe无法使用。拖动图片也可以正常工作。 - Ben Butterworth
有趣的是,在Xcode 12 ios 13.2.2上测试拖放功能时一切正常。我想这可能与捆绑在Xcode 11中的模拟器有关,谁知道呢。但是不管怎样,xcrun可以胜任这项工作。 - joe
CSV文件对我来说完美运行!xcrun simctl openurl booted 'file:///Users/myuser/Desktop/file.csv' - Vitor Braga
显示剩余2条评论

24

这里可以找到最简单的解决方案:https://apple.stackexchange.com/a/299565/140768

简短总结: 你需要一个能够处理/存储“文档”的应用程序。建议如链接的帖子所示,只需创建一个空的“基于文档”的应用程序并运行一次。

输入图像描述


这太棒了!对于开发者来说是一个不错的可行解决方案 :) - Sourabh Bhardwaj
1
好主意!我确实认为苹果没有提供一种在模拟器中模拟一些文件数据的方法很烦人,但是这就是苹果,哈哈。 - Stoph

13

您可以将文件上传到模拟器登录的帐户的iCloud Drive中,并通过浏览/ iCloud驱动器选项进入文件应用程序或文件上传对话框来访问它们。


20
设备上没有办法获取本地文件吗? - Atif Imran
7
登录后,iCloud Drive是否会显示模拟器中的文件?对我来说没有成功... iCloud Drive是空的(已登录且在设置中启用了选项)。 - vomi
无法工作,登录iCloud后,文件为空。 - Alauddin Afif Cassandra

11

多个步骤,但有效

1)创建一个新的文档型应用程序项目,并在同一模拟器上运行它。

输入图像描述

2)现在在模拟器中打开safari并搜索pdf。从操作表中选择“保存到文件”选项,然后选择您新创建的应用程序文件夹。

输入图像描述

输入图像描述


我建议将“multiple”重命名为“just 2” :),因为实际上只需要2分钟完成。说实话,这很快。此外,您可以增加人们完成这些步骤的转化率 :)。 - Tung Fam
1
我收到一个错误,上面写着“操作无法完成。没有这样的文件或目录”。 - sheriff_paul
刚刚找到了解决方案,我需要进入电脑的根目录并从那里发送文件。 - sheriff_paul
这应该是被接受的答案。很准确,没有花哨。 - zulkarnain shah

11
  1. 在您的模拟器上使用 Safari 浏览器

  2. 访问 https://en.unesco.org/inclusivepolicylab/sites/default/files/dummy-pdf_2.pdf 获取一个虚拟的 PDF 文件

  3. 点击下面所示的中间图标enter image description here

  4. 点击“保存到文件”,完成操作enter image description here


1
太棒了!以前怎么没人想到过这个!谢谢! - user1366265

10

将文件从Filer拖放到模拟器上,在macOS Catalina(我目前在10.15.5上看到此问题)存在问题。 显然,如果源文件在“受限制”的目录中(例如Downloads),它将无法传输。

将文件放入$ HOME目录中,然后拖动它(或使用共享按钮共享到模拟器)。 参见主题: https://forums.developer.apple.com/thread/126307


显然这个拖放问题已经得到解决。现在在macOS Catalina 10.15.6和XCode版本12.0.1(12A7300)以及模拟器版本12.0.1(940.16)上。 - anorskdev
这是最简单的解决方案,已经起了作用。谢谢! - Kuldip Chaudhari

9
答案很简单,只需在 macOS 中将文件压缩为 zip 格式,然后拖放到模拟器中,它就会自动在文件应用程序中打开,您可以在那里进行解压缩并使用它。

8

目前,您可以使用右键单击要发送的文件夹/图像,并从列表中选择“共享 -> 模拟器”。

输入图像描述

然后,您将看到一系列选项:

输入图像描述


这是向任何iOS模拟器添加文件的最简单方法。 - Vincent D'amour
文件发送到哪里了?当我这样做时,文件没有出现在文件夹中。 - thejdah
哇,你真是个天才!将特定文件发送到模拟器的最简单方法! - Marina Budkovets

8

我发现用Python3可以轻松地实现这一点(我想所有的Mac电脑都应该默认安装了它)。

以下是具体步骤:

  1. 打开终端应用程序
  2. 进入包含您文件的目录,例如

enter image description here

(我需要将自签名证书传输到模拟器中)

  1. 运行python3 -m http.server来启动HTTP服务器
  2. 在模拟器中打开Safari,并打开http://localhost:8000,您应该会看到文件列表,例如

enter image description here

  1. 从Safari下载所需的文件

不妨手动将Zscaler证书拖放到模拟器中,这似乎更容易。 - valosip

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接