如何开发iOS模拟器插件

Posted

技术标签:

【中文标题】如何开发iOS模拟器插件【英文标题】:How to develop iOS simulator plugins 【发布时间】:2018-11-07 19:22:31 【问题描述】:

随着劫持 ios 模拟器的不同应用程序的兴起(例如完美无缺或现在的 sherlock),我很好奇这是如何做到的。

据我所知,有一些基于 SIMBL 的选项,但我认为上面没有使用它。此外还有 Injection (https://github.com/johnno1962/injectionforxcode),它使用 XPC 来注入代码。

我猜有不同的方法(例如 UI 更改是如何完成的?要么是它上面的完美层,要么是 sherlock 中的变量更改)所以如果有人能指出我的正确之处,那就太好了方向。

【问题讨论】:

【参考方案1】:

我没用过插件但是:

sherlock 从我阅读的内容中加载由模拟器运行的应用程序中的代码。 (https://www.hackingwithswift.com/articles/131/sherlock-turbocharges-your-ios-simulator)

完美无瑕,但网站上的所有内容都是在模拟器窗口的顶部覆盖一个 UIWindow。即使是单独的应用程序也可以做到这一点。 (https://flawlessapp.io/)


SIMBL 两者都可以,我想说... 但是您也可以通过附加 LLDB 来做很多事情!真的很强大。 (一个很好的例子是https://github.com/facebook/chisel) xcode 的代码注入基本相同(大致;)

=> 模拟器 AFAIK 仍然没有公共/或私有 api

=> 在模拟器中定位应用程序对我来说似乎更容易

(还有其他方法可以通过操纵默认值或玩弄 simctl 进程)

【讨论】:

以上是关于如何开发iOS模拟器插件的主要内容,如果未能解决你的问题,请参考以下文章

一些 Cordova 插件在 iOS 模拟器中未定义

如何更方便地使用IOS模拟器位置?

用于颤振的 GoogleMaps 插件仅显示 ios 模拟器上的标记

如何在 iOS 模拟器或开发设备上测试半自治应用程序模式

如何在开发过程中同时使用 Android 和 IOS 模拟器来测试我的 Flutter 应用程序?

模拟ios时间插件