41

我想知道是否有人成功地将 javascript 引擎/解释器移植到 iOS。我正在编写一个 iPhone 游戏,我想使用 Javascript 作为高级脚本语言(AI、游戏玩法等),但要做到这一点,我需要将 JS 引擎编译为静态库并将其链接到我的 iPhone OS 的 ObjectiveC 程序。我正在研究一些候选 JS 引擎,但我找不到任何成功的案例。

这是我希望用于 iOS 的 js 引擎

  • google 的 V8 javascript 引擎
  • Mozilla 的 SpiderMonkey

另一种方法是使用UIWebView'sJavascript回调接口,但这需要将整个加载UIWebView到内存中,我听到的经验是它通常性能很慢。

感谢是否有人有类似的经验或知道任何参考!

[更新] 正如 Kostis 提到的,Apple在 WWDC 2013 中引入了JavascriptCore

4

4 回答 4

25

您可能对以下两个项目感兴趣:

  1. JavaScriptCore-iOS
  2. iMonkey

绝对可以使用您的 iOS 应用程序构建和发布 JavaScript 引擎,请参阅http://www.phoboslab.org/log/2011/04/ios-and-javascript-for-real-this-time。Titanium 也这样做:https ://github.com/appcelerator/webkit_titanium/tree/master/Source/JavaScriptCore 。另请参阅http://www.phoboslab.org/log/2011/06/javascriptcore-project-files-for-ios

我还制作了一个小应用程序,展示如何在 iOS 上使用 JSC:https ://github.com/jfahrenkrug/AddressBookSpy

享受。

于 2011-07-06T06:29:33.297 回答
14

对于未来的观众,现在有了新 iOS 7 中引入的 JavaScriptCore 框架。它确实很神奇!包装,从/到 JS/Objective-C 的值,调用函数,回调,一切!

不幸的是,目前文档真的很差。您可以在WWDC 2013 活动中找到演示文稿,并在头文件中找到更多信息(cmd+单击 Xcode 中的头文件名)。互联网上也有一些教程只是复制了 WWDC 演示文稿中的人所做的事情。

我已经将它用于我的一个项目,它真的很强大。我唯一不喜欢的是它通过值将对象从 JS 传递到 ObjC,即丢失了引用。可能有一个解决方法,但如果没有适当的文档,我找不到任何东西。

希望这会对某人有所帮助:)

于 2013-12-06T16:18:39.187 回答
4

看看嵌入了 JavaScriptCore 的开源项目Ejecta。它提供 HTML5 画布 API,并使用 OpenGL 和 OpenAL。

于 2012-10-06T00:28:00.383 回答
1

如果您最终想将游戏移植到 iOS 以外的其他平台(或者您有其他原因避免使用 Apple 的专有接口),您可以使用MuJS。它是一个小型库,提供易于嵌入和扩展的 JavaScript 解释器。

于 2014-09-22T12:45:27.760 回答