【问题标题】:Android App Crash: Running demo NaCl app (pexe app) on mobile using Apache CordovaAndroid 应用程序崩溃:使用 Apache Cordova 在移动设备上运行演示 NaCl 应用程序(pexe 应用程序)
【发布时间】:2015-12-03 03:10:51
【问题描述】:

我正在尝试使用以下说明在 Android Mobile 上运行 Chrome 应用: 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 目录在桌面上运行“本机客户端”应用程序: 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

它处理一切都很好,我发现构建这个像计算器应用程序一样的科尔多瓦应用程序没有错误。但是,在应用程序启动时“启动成功”后,Android 模拟器崩溃了。模拟器窗口关闭。

我从 AVD Manager 启动了 Android 模拟器,启动 Android 后我尝试启动“文件 I/O”应用程序,结果显示了消息

“很遗憾,文件 I/O 已停止。” Screenshot

这是否意味着 Android 操作系统仍不支持 PNaCl/NaCl 应用? NaCl 应用程序包含 .pexe 文件。 中间有没有我可能遗漏的步骤?

如果我可以在 Android 操作系统上运行原生客户端应用程序,就像使用 Apache Cordova 示例的 Chrome 移动应用程序一样工作,我非常感谢这方面的任何帮助。

【问题讨论】:

  • Android 版 Chrome 不支持 Native Client(暗示基于 Chrome 的 WebView)。见:developer.chrome.com/multidevice/faqDoes Native Client work on Chrome for Android? It does not, and we have no plans to announce at this time.
  • 是的,我已经阅读了。然后我也遇到了这个:github.com/MobileChromeApps/mobile-chrome-apps/blob/master/docs/…Is NaCL / PNaCL supported? No. However, you can still compile and use native code by writing a custom Cordova plugin.
  • native code by writing a custom Cordova plugin 是 Android Java 而不是 NaCl/PNaCl。编写 Android 应用程序时 - Java 是本机语言。它可以理解为“本地”是一个重载的词。
  • 这比使用 Android NDK 好吗?
  • Android NDK 适用于用 C/C++ 编写的代码,并使用 Java 原生接口 (JNI) 与 Java 层进行通信。一般用于需要计算性能或现有库(物理、图像处理等)的事物。选择任何路径的原因取决于具体情况。

标签: android cordova google-chrome-app google-nativeclient


【解决方案1】:

Android 版 Chrome 不支持 Native Client (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 Native Development Kit (NDK)。

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

当 Cordova 提到“本机代码”时,它指的是用 Android Java 编写的代码,需要通过 Cordova 插件桥接到 JavaScript 端。

当然,为什么要使用上述任何框架/API 取决于 OP 想要做什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-15
    • 1970-01-01
    • 2013-03-30
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多