Android 应用程序崩溃:运行 使用 Apache Cordova 在移动设备上演示 NaCl 应用程序(pexe 应用程序)

Android App Crash: Running demo NaCl app (pexe app) on mobile using Apache Cordova

我正在尝试 运行 Chrome 应用程序在 Android 移动设备上使用以下说明: developer.chrome.com/apps/chrome_apps_on_mobile

从上面 URL,我可以 运行 计算器应用程序在 Android Emulator 5.0.1 中很好。没问题。

github.com/GoogleChrome/chrome-app-samples/tree/master/samples/calculator

Chrome App Calculator on Android Screenshot

然后我尝试从 nacl_sdk 的示例 api 目录中 运行 在桌面上安装 "Native Client" 应用程序: developer.chrome.com/native-client/sdk/download

nacl_sdk 附带了一些示例,包括演示和核心 api 示例。所有示例在桌面上运行良好。我从中选取了 'file_io' api 示例,编译 (make) 后 运行 没问题。我获取了该文件夹并使用以下命令创建了 cca cordova 应用程序:

cca create FileApp --copy-from=/path/to/file_io/manifest.json

然后cd到FileAppcca prepare

之后运行 Android eumlate 命令:

cca run android --target=avd5

它处理的一切都很好,我没有看到构建这个像计算器应用程序这样的 cordova 应用程序的错误。但是,在应用程序启动 'LAUNCH SUCCESS' 之后 Android 模拟器崩溃了。模拟器 windows 已关闭。

我从 AVD Manager 启动了 Android 仿真器,启动后 Android 我尝试启动 'File I/O' 应用程序,结果显示了消息

"Unfortunately, File I/O has stopped." Screenshot

这是否意味着 PNaCl/NaCl 应用程序仍然不受 Android OS 支持? NaCl 应用程序包含 .pexe 文件。 我可能会遗漏中间的任何步骤吗?

如果我能在 Android OS 上测试 运行 本机客户端应用程序,就像 Chrome 移动应用程序使用Apache Cordova 示例有效。

Chrome Android 不支持本机客户端 (NaCl)(暗示基于 Chrome/Chromium 的 WebView)。

参见:http://developer.chrome.com/multidevice/faq

Q: Does Native Client work on Chrome for Android?
A: It does not, and we have no plans to announce at this time.

但随后 OP 阅读:https://github.com/MobileChromeApps/mobile-chrome-apps/blob/master/docs/faq.md#is-nacl--pnacl-supported

Q: Is NaCl/PNaCl supported [in Cordova]? 
A: No. However, you can still compile and use native code
   by writing a custom Cordova plugin.

不幸的是,native 这个词是一个重载的词,根据上下文具有不同的含义,因此 OP 开始询问 Android 本机开发工具包 (NDK)。

Android NDK 使用 Java 本机接口 (JNI) 使 C/C++ 代码与 Android Java 框架通信。通常 Android 应用仅在需要移植现有 C/C++ 库或具有物理建模或图像处理等计算性能要求时才使用 NDK。

当 Cordova 引用 'native code' 时,它指的是用 Android Java 编写的代码,需要通过 Cordova 插件桥接到 JavaScript 端.

当然,为什么要使用上述任何一项 frameworks/APIs 取决于 OP 想要做什么。