【问题标题】:How to build JavaScriptCore for iOS device?如何为 iOS 设备构建 JavaScriptCore?
【发布时间】:2011-03-26 17:07:44
【问题描述】:

我已经下载了 Webkit nightly build。我打开 JavaScriptCore 并构建它。编译完成,没有任何错误。但输出是一个仅包含 OS X 二进制文件的框架。我尝试取消选中“仅构建活动架构”,但只构建了桌面架构。 (我用 lipo 工具查看了二进制文件)

有什么简单的方法可以做到这一点吗?我期待静态库可以链接到我的 iOS 应用程序项目。我正在尝试将 JSC 作为游戏内脚本引擎嵌入。

【问题讨论】:

    标签: javascript ios embedding


    【解决方案1】:

    我 fork phoboslab's repo 并将其更新到 WebKit 的最新版本(截至上周五)。它与 iOS 5 和 6 兼容,并包含将在 iOS 7 中提供的 Objective-C 到 Javascript 的桥接(不使用私有框架或函数)。

    你可以在 GitHub 上找到 repo: https://github.com/darionco/JavaScriptCore-iOS

    为方便起见,我还在包含库 (.a) 和所需头文件的存储库中添加了一个 ZIP 文件。

    干杯!

    【讨论】:

    • 请注意:JavaScriptCore 是 iOS7 公共框架的一部分。而且我认为这仍然是兼容性的不错选择。
    • 另外注意:Apple 不接受绑定到新的 JavascriptCore 框架的应用程序,该框架将在 iOS 5/6 上可用,因此如果您有一个需要的 iOS 应用程序,则需要这种方法向后兼容。谢谢,@Dario!
    • 说得太快了——这构建得很好,但是在遵循项目 GitHub 页面上的指导后,我在构建过程中遇到了经典的“架构 armv7 的未定义符号”错误。有什么想法吗,伙计们?
    • 两件事,有一个目标结合不同的目标来制作一个多片二进制文件,repo 的自述文件有一些关于如何做到这一点的构建说明。另一种可能性是我没有包含新的 64 位目标(我做这个时它不可用),所以你必须将它添加到项目中。
    • Yavor Georgiev 也花时间大大改进了分叉:github.com/fealebenpae/JavaScriptCore-iOS
    【解决方案2】:

    看起来有一个用于 JavaScriptCore 的 XCode 项目,它是 WebKit 代码库的一部分。我能够将目标 SDK 更改为 iOS,将目标架构更改为 arm6/arm7,并且动态框架构建良好。当然,您需要将其编译为静态库,因此您需要为 iOS 创建一个新的静态库目标,并将 Targets->JavaScriptCore 下的所有内容复制到您的新静态库目标中。这可能有点棘手,但它可能会奏效。

    【讨论】:

    • 我投票赞成而不是选择正确答案,因为我决定使用另一个脚本引擎,因此目前很难抽出时间来测试它。我希望这种方式可行,并感谢您的建议:)
    • Ryan,是否可以添加有关您的构建过程的更多详细信息?我也想尝试一下,但我不知道项目设置中需要更改什么。
    • 你对@Eonil的决定是什么?
    • @David 我切换到Lua。这显然是更好的选择。
    • @Eonil,很有趣,感谢您提供的信息。您是否必须自己绑定到来自 Lua 的本机绘图调用?还是您使用一些现有的库?
    猜你喜欢
    • 1970-01-01
    • 2017-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-10
    • 1970-01-01
    • 2012-03-24
    相关资源
    最近更新 更多