Встроить движок JavaScript в приложение iOS

Интересно, успешно ли кто-нибудь перенес JavaScript-движок / интерпретатор на iOS? Я пишу игру для iPhone, в которой я хотел бы использовать Javascript в качестве языка сценариев высокого уровня (AI, геймплей и т. Д.), Но для этого мне нужно скомпилировать движок JS в статическую библиотеку и связать его с моя программа targetC для iPhone OS. Я смотрю какой-то кандидатный движок JS, но я не смог найти ни одного успешного случая для этого.

Вот движок js, который я надеялся использовать для iOS

  • Google V8 Javascript Engine
  • SpiderMonkey от Mozilla

Альтернатива заключается в использовании UIWebView's Интерфейс обратного вызова Javascript, но это требует загрузки всего UIWebView в память и опыт, который я слышал, это то, что это обычно медленно в исполнении.

Цените, если у кого-то был подобный опыт сделать это или знаете какие-либо ссылки для этого!

[ОБНОВЛЕНО], как упомянул Костис, Apple представила JavascriptCore в WWDC 2013

4 ответа

Решение

Для будущих зрителей теперь есть фреймворк JavaScriptCore, представленный в новой iOS 7. Это волшебство! Упаковка, развертывание значений из / в JS/Objective-C, вызов функций, обратные вызовы, все!

К сожалению, документация действительно плохая на данный момент. Вы можете найти презентацию из события WWDC 2013 и некоторую дополнительную информацию в заголовочных файлах (cmd+ клик по имени файла заголовка в Xcode). Есть также некоторые учебники по интернетам, которые просто копируют то, что делает парень из презентации WWDC.

Я использовал его для одного из своих проектов, он действительно мощный. Единственное, что мне не понравилось, это то, что он передавал объекты из JS в ObjC по значению, то есть ссылка была потеряна. Возможно, для этого есть обходной путь, но я не смог ничего найти без надлежащей документации.

Надеюсь, это поможет кому-то:)

Вам могут быть интересны два проекта:

  1. JavaScriptCore-IOS
  2. iMonkey

Абсолютно возможно создать и поставить движок JavaScript с вашим приложением для iOS, см. 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.

Я также сделал небольшое приложение, которое показывает, как использовать JSC на iOS: https://github.com/jfahrenkrug/AddressBookSpy

Наслаждаться.

Взгляните на проект с открытым исходным кодом Ejecta, в который встроен JavaScriptCore. Он предоставляет HTML5 canvas API и использует OpenGL & OpenAL.

Если вы в конечном итоге захотите портировать свою игру на что-то другое, кроме iOS (или у вас есть другие причины избегать фирменных интерфейсов Apple), вы можете использовать MuJS. Это небольшая библиотека, предоставляющая интерпретатор JavaScript, который легко встраивать и расширять.

Другие вопросы по тегам