无需模拟器即可运行iOS代码

时间:2016-10-21 13:17:29

标签: ios swift xcode ibdesignable

我注意到Xcode能够为IBDesignables运行UIKit代码,而根本不需要启动模拟器。它似乎是使用IBDesignablesAgentCocoaTouch工具,这是一个macOS应用程序。如何实现这样的事情?

1 个答案:

答案 0 :(得分:0)

为x86_64编译的iOS应用程序实际上是普通的macOS应用程序,只是链接到不同的框架。模拟器框架提供了所有这些框架所需的运行时,其运行方式与它们在iOS硬件上的运行方式类似。 IBDesignablesAgentCocoaTouch守护程序可以旋转足够的iOS子系统,以便每次在Xcode中进行更改时都可以拍摄UI的快照。从理论上讲,可以以与模拟器不同的方式部分或完全启动iOS子系统,但这很可能侵犯了您在安装时签署的开发人员许可协议,并且肯定不合法分发。法律或其他方面,这将是一项非常艰巨的任务,并且很可能会随着系统的每次更改而中断。这足以让我们了解近年来模拟器框架的变化范围,以了解这对非Apple开发人员有多么困难。

例如,如果您需要运行非UI代码进行测试,那么有更简单的方法可以实现您的需求,例如创建macOS目标并在其中包含所有非UI内容,以及剔除用于测试的绝对最低必要UI。

如果你想使用iOS框架实现多平台开发,然后在模拟器之外使用Apple iOS框架运行它们,这是不合法的(iOS框架通常不与macOS一起分发,并且需要安装Xcode),而不是一个好主意,因为用户希望应用程序在他们运行的平台上本地运行。 iOS UI概念最适合触摸输入,但它们在精确指针输入生态系统中不合适。