如何在iPhone模拟器中安装iPhone应用程序

65
我有一个mySample.app文件,这是由xcode开发的iPhone应用程序。
我该如何使用我的xcode运行这个(仅限mySample.app文件)应用程序?

1
可以在Xcode 8.2中实现。 - Abhijith
10个回答

60
请注意:这篇答案已经过时,该功能已从iOS模拟器中删除。 我发现,在模拟器上启动移动应用程序,不需要将应用程序包复制到iPhone模拟器文件夹中,就像论坛中描述的那样。采用这种方式需要点击应用程序才能启动它,这对于想要进行测试并多次启动应用程序的人来说并不方便。
iOS模拟器有一些未记录的命令行参数可用于此类目的。您要查找的是:-SimulateApplication
以下是一个示例命令行,用于启动“你最喜欢的应用程序”。
/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone\ Simulator.app/Contents/MacOS/iPhone\ Simulator -SimulateApplication path_to_your_app/YourFavouriteApp.app/YourFavouriteApp

这将启动您的应用程序,无需任何安装,并且能够在至少使用iOS模拟器4.2版本。不过您将无法到达主屏幕菜单。

还有其他未发布的命令行参数,例如切换SDK。祝你寻找愉快...


4
strings /Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone\ Simulator.app/Contents/MacOS/iPhone\ Simulator 命令会给出附近的 SimulateApplication 的以下选项:
  • 位置经度
  • 位置纬度
  • 位置模式
  • 始终在前面
  • 窗口方向
  • 启动时会话
  • 模拟重启
  • 移动 Safari
  • Safari 浏览器
  • 模拟设备
  • 模拟应用程序
  • 位置方案
- sj26
2
我仍然可以在4.3.1中让它工作。尽管当我使用.app包路径而不是包内可执行文件时(即foo.app/foo),我遇到了这个错误。 - gaige
7
很好 @sj26。通过试错,我确定了(对于5.1模拟器)"SimulateDevice"需要以下参数:"iPhone"、"iPhone (Retina)"、"iPad"、"iPad (Retina)"。 - cheshirekow
4
iOS 7 SDK似乎不再使用“-SimulateApplication”参数。有什么想法在iOS 7中如何实现这一点? - Dale Emery
9
很抱歉,模拟器中已删除该功能。但还有其他参数可用,例如SimulateDevice和SimulatorWindowCenterX-SimulatorWindowCenterY,但我找不到任何指向以任何直接或间接方式启动应用程序的字符串迹象。 不过,我发现在命令行中指定的任何字符串参数都将在相对于模拟器的应用程序文件夹的路径下在Safari中打开。我不确定这有多有用(也许是一个记录在案的功能)。 - racs
显示剩余10条评论

13

从Xcode 8.2开始,你可以在模拟器中安装应用程序。

你可以通过将任何之前构建的应用程序包拖放到模拟器窗口中来安装一个应用程序(*.app)。

注意:你不能在模拟环境中从App Store安装应用程序。


11
这篇文章讨论了如何在模拟器上安装二进制文件。我已经尝试过并且可以正常工作:http://forums.macrumors.com/showthread.php?t=547557帖子中得知:
查看~/Library/Application Support/iPhone Simulator/User/Applications/目录,观察使用XCode安装和运行应用程序以及删除模拟器中的应用程序时该目录内部会发生什么变化。
您可以独立启动模拟器(不需要启动XCode)。
如果您启动模拟器,删除一个应用程序,退出模拟器,然后将从支持目录中删除的文件的副本放回去,并重新启动模拟器,则该应用程序将重新出现在模拟器中。请通过电子邮件发送这些文件,并附上有关如何将它们复制到适当的支持目录中的说明。

2
可以使用Xcode 8.2实现。 - Abhijith

9
如果您想在XCode 5+中进行此操作,我发现这是最简单的方法:
安装ios-sim:
npm install -g ios-sim
然后只需执行以下命令:
ios-sim launch ./mySample.app --devicetypeid com.apple.CoreSimulator.SimDeviceType.iPhone-6
您可以更改设备类型。简单、快速且实际有效。

2
根据这个评论,brew不再受支持。现在推荐的方法是使用npm install -g ios-sim - Jeff Huijsmans

7
自 Xcode v4.3 起,它被安装为应用程序。模拟器可在以下位置找到:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iOS Simulator.app/

3
在我的系统上,使用 Xcode 4.3 版本,iPhone 模拟器的位置为/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone\ Simulator.app/Contents/MacOS/iPhone\ Simulator - cheshirekow

4
在终端中输入以下内容:
$/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone\ Simulator.app/Contents/MacOS/iPhone\ Simulator -SimulateApplication path/to/your/file/projectname.app/projectname

遗憾的是,这已经不再适用了(至少到Xcode 5.0,可能更早的版本)。 - Perry
@Perry,有没有其他选择? - RameshVel
@RameshVel 我最近发现旧的iphonesim项目,该项目为XCode模拟器提供了命令行界面,在https://github.com/phonegap/ios-sim上有一个活跃的分支。它在Apple所施加的限制范围内运作良好。 - Perry
@Perry,是的,我现在正在使用ios-sim。它现在运行良好。谢谢。 - RameshVel

2
我看到您有一个问题。尝试将应用程序构建为发布版本,然后查看源代码构建文件夹。它可能被称为Release-iphonesimulator。里面会有应用程序。然后转到(主文件夹)/ Library / Application Support / iPhone Simulator(如果找不到,请尝试按Command-J并选择按名称排列)。进入一个在iPhone模拟器中有应用程序的操作系统,例如4.1。在该文件夹中应该有一个Applications文件夹。打开它,那里应该有带有随机字母的文件夹。选择任何一个,并将其替换为您拥有的应用程序。确保删除小文件夹中的任何内容!如果还不行,那我就无能为力了。

1
选择iPhone模拟器平台,然后单击“构建和运行”。如果构建正确,则会启动模拟器并运行。如果构建不成功,则会在窗口右侧底部显示错误信息。
如果只有应用程序文件,则需要手动将其安装到模拟器中。模拟器不是设计用于这种方式的,但我相信这是可能的,即使难度很大。
如果您有源代码(.proj .m .h等)文件,则应该是构建和运行的简单情况。

对我来说,它构建得很好,但是给了我一个错误提示:“无法启动模拟应用程序:未知错误。” 它以iPad模式启动模拟器,并显示一个空白屏幕。 当我切换到主屏幕时,它不显示我的应用程序。 - Albert

0

简短回答

对于那些迫不及待的人,以下命令将安装一个iOS应用程序包到指定的模拟器。

xcrun simctl install 2A3F00EE-F412-4999-8109-ED3D4E70D266 ./YOURAPP.app

长篇版本

完整的故事在这个Quip文档中。

xcrun

苹果有一个命令行工具叫做xcrun,它会在活动开发者目录中查找指定的命令行工具并运行它。我们将在本文中使用xcrun simctl

活动开发者目录

macOS用户可以安装多个Xcode版本,并使用xcode-select命令选择要使用的版本。每个已安装的Xcode捆绑包都有一个名为Developer的文件夹。以下命令显示当前正在使用的开发者目录。

$ xcode-select -p
/Applications/Xcode.app/Contents/Developer

列出模拟器类型

xcrun simctl list devicetypes 命令显示了安装在 macOS 系统上的所有模拟器类型。可以将模拟器视为虚拟机(VM)。每种类型都类似于 VM 规范。

$ xcrun simctl list devicetypes
== Device Types ==
iPhone 4s (com.apple.CoreSimulator.SimDeviceType.iPhone-4s)
...
iPhone 12 (com.apple.CoreSimulator.SimDeviceType.iPhone-12)
...

创建模拟器

以下命令将创建一个名为yi-iphone12-sim的模拟器,其类型为com.apple.CoreSimulator.SimDeviceType.iPhone-12,如上所示。

$ xcrun simctl create yi-phone12-sim com.apple.CoreSimulator.SimDeviceType.iPhone-12
No runtime specified, using 'iOS 16.2 (16.2 - 20C52) - com.apple.CoreSimulator.SimRuntime.iOS-16-2'
2A3F00EE-F412-4999-8109-ED3D4E70D266

它会打印出新模拟器的ID。

已创建的模拟器列表

以下命令列出了模拟器。

$ xcrun simctl list devices
== Devices ==
-- iOS 16.2 --
    yi-phone12-sim (2A3F00EE-F412-4999-8109-ED3D4E70D266) (Shutdown)

我们可以看到它列出了模拟器yi-iphone12-sim,并且它的状态是Shutdown

启动模拟器

以下命令启动模拟器yi-iphone12-sim

$ xcrun simctl boot 2A3F00EE-F412-4999-8109-ED3D4E70D266

请注意,我们不能使用名称 yi-iphone12-sim。相反,我们将使用ID。
在模拟器窗口显示主屏幕后,xcrun simctl list devices 命令会显示模拟器已启动。
$ xcrun simctl list devices
== Devices ==
-- iOS 16.2 --
    yi-phone12-sim (2A3F00EE-F412-4999-8109-ED3D4E70D266) (Booted)

在模拟器中安装应用程序

我在https://github.com/sheldonth/ios-cmake/tree/master检出了这个项目,然后使用CMake构建它。结果是一个名为./build.sim64/Release-iphonesimulator/YOURAPP.app的iOS捆绑包。

使用以下命令将此应用程序安装到模拟器中。

xcrun simctl install 2A3F00EE-F412-4999-8109-ED3D4E70D266 build.sim64/Release-iphonesimulator/YOURAPP.app

0

这在 iOS 5.0 模拟器上对我有效。

  1. 在模拟器上运行应用程序。

  2. 进入路径,你会看到类似于这样的东西:

    /Users/arshad/Library/Application\ Support/iPhone\ Simulator/5.0/Applications/34BC3FDC-7398-42D4-9114-D5FEFC737512/…
    
  3. 复制所有包内容,包括应用程序、lib、temp和Documents。

  4. 清除模拟器上安装的所有应用程序,以便更容易地查看发生了什么。

  5. 运行您在模拟器上预先存在的应用程序。

  6. 查找与步骤3中相同的应用程序的包内容,并将其全部删除。

  7. 粘贴之前复制的包内容。

  8. 关闭模拟器并重新启动。预期应用程序的新应用程序图标将替换旧的应用程序图标。


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