2

我们创建了一个 HTML5 + Javascript 应用程序,并希望将其移植到 Android。我们已经知道 WebKit 无法运行 HTML5 应用程序,因为

  • 异构 Android 代码库严重支持最新的 HTML5 壮举

  • 我们使用 WebGL

  • 复杂的 HTML5 用户界面太慢,无法在 Android WebKit 上呈现

然而,我们的核心应用程序逻辑仍然存在于 Javascript 中。

现在正在寻找方法

  • 运行应用程序逻辑直接移植(复制)Javascript

  • 轻松绑定到 Android Java UI API

  • 围绕这个 Javascript 逻辑构建原生 Android UI

  • 为 Android OpenGL ES 创建与 WebGL 兼容的绑定并从 Javascript 访问图形 API

  • 希望 JIT 或体面的表现

对于 Android 上的自定义 JS 运行时,我们有哪些选择?我知道 Firefox Aurora 已经这样做了;Firefox 主要是基于 JS 的应用程序,现在他们在 Aurora 构建中从 XUL 切换到原生 Android UI。

生成的应用程序必须符合生产质量并受 Android Market 分发的约束。

4

2 回答 2

0

看看 Firefox Mobile 的新Native UI 代码,它嵌入了 Gecko(因此也嵌入了 SpiderMonkey),并拥有 Firefox 桌面版的所有内容功能,包括 WebGL。

但请注意,Firefox Mobile 过去所做的事情与您想要的非常相似:嵌入(并提供必要的设备访问 API)Gecko 引擎,然后使用XUL和 JavaScript 执行所有 UI 和应用程序逻辑。这会导致严重的性能问题,这也是我们现在正在为移动设备开发 Java UI 的主要原因。

正如 staktrace 所提到的,如果您想要 WebGL,您将需要 DOM,这意味着您将需要整个 Gecko。或者,您可以直接将 OpenGL ES 与 Android 的图形 API 一起使用。可以提取或重用 Gecko 的一些 WebGL 代码并创建您自己的 OpenGL JavaScript 绑定,但它不会是 WebGL。

于 2012-01-16T00:46:25.087 回答
0

如果您想要所有 HTML5(尤其是 WebGL),那么您还需要 DOM API,它们不是 SpiderMonkey 的一部分。SpiderMonkey 只是核心 Javascript 语言解释器,不包含特定于浏览器的绑定,如窗口/文档/元素对象。所以真的,如果你想在 Android 上使用 HTML5+JS,你就必须嵌入整个浏览器,这在 Firefox Aurora 上是不容易做到的。

于 2012-01-12T15:34:02.733 回答