web-dev-qa-db-ja.com

iOSアプリケーションにJavaScriptエンジンを埋め込む

誰かがJavaScriptエンジン/インタプリタをiOSにうまく移植できたのだろうか。 JavaScriptを高水準スクリプト言語(AI、ゲームプレイなど)として使用したいiPhoneゲームを書いていますが、それを行うには、JSエンジンを静的ライブラリにコンパイルしてリンクする必要がありますiPhone OS用のobjectiveCプログラム。私が見ている候補のJSエンジンはいくつかありますが、それを行うための成功例は見つかりませんでした。

これが私がiOSで使用したいと思っていたjsエンジンです

  • googleのV8 JavaScriptエンジン
  • mozillaのSpiderMonkey

もう1つの方法は、UIWebView's Javascriptコールバックインターフェイスを使用することですが、UIWebView全体をメモリにロードする必要があり、私が聞いた経験では、通常、パフォーマンスが遅いということです。

誰かがこれを行うような同様の経験をしたか、そのための参照を知っていれば感謝します!

[更新] Kostisが言及したように、Apple導入 JavascriptCore WWDC 2013で

40
dennycd

将来の視聴者のために、新しいiOS 7で導入されたJavaScriptCoreフレームワークが登場しました。 JS/Objective-Cとの間の値のラップ、アンラップ、関数の呼び出し、コールバック、すべて!

残念ながら、現時点ではドキュメントは本当に貧弱です。 WWDC 2013 event からのプレゼンテーションと、ヘッダーファイルの詳細情報を見つけることができます(Xcodeでヘッダーファイル名をcmd +クリック)。 WWDCプレゼンテーションの男がすることを単にコピーするインターネットに関するチュートリアルもいくつかあります。

私は自分のプロジェクトの1つにそれを使用しましたが、それは本当に強力です。私が気に入らなかった唯一の考えは、JSからObjCに値でオブジェクトを渡した、つまり参照が失われたということです。これには回避策があるかもしれませんが、適切なドキュメントがないと何も見つかりませんでした。

これが誰かを助けることを願っています:)

14
Kostis

興味のあるプロジェクトが2つあります。

  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/JavaScriptCorehttp://www.phoboslab.org/log/2011/06/javascriptcore-project-files-for-ios も参照してください。

IOSでJSCを使用する方法を示す小さなアプリも作成しました: https://github.com/jfahrenkrug/AddressBookSpy

楽しい。

25

JavaScriptCoreを組み込んだオープンソースプロジェクト Ejecta を見てください。 HTML5キャンバスAPIを提供し、OpenGLとOpenALを使用します。

4
Nik

最終的にゲームをiOS以外に移植したい場合(またはAppleの独自のインターフェースを回避する他の理由がある場合)は、 MuJS を使用できます。これは、埋め込みや拡張が簡単なJavaScriptインタープリターを提供する小さなライブラリーです。

1
ccxvii