Встроить движок 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 по значению, то есть ссылка была потеряна. Возможно, для этого есть обходной путь, но я не смог ничего найти без надлежащей документации.
Надеюсь, это поможет кому-то:)
Вам могут быть интересны два проекта:
Абсолютно возможно создать и поставить движок 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, который легко встраивать и расширять.