从 Chrome 网上应用店减少 Native Client 安装的网络流量

Reduce network traffic for Native Client installation from Chrome Web Store

我的 Chrome 应用包含三个 .nexe 文件,用于 arm, x86-3264-bit 处理器。当我从 Chrome web store 安装此应用程序时,下载包的大小与包含所有 .nexe 文件的应用程序的大小相同。是否可以优化此网络流量?

我的 .nmf 捆绑在应用程序中的文件如下所示:

{
  "program": {
    "arm": { "url": "arm.nexe" },
    "x86-32": { "url": "x86_32.nexe" },
    "x86-64": { "url": "x86_64.nexe" }
  }
}

谢谢

是的,您可以在 manifest.json 中添加特定于平台的部分。然后这些包将只下载为该 CPU 架构指定的组件。

这里有该功能的文档:https://developer.chrome.com/native-client/devguide/distributing#reducing-the-size-of-the-user-download-package

SDK 中也有示例:examples/tutorial/multi_platform

总结上面的文档: 首先在你的App包中创建一个_platform_specific目录。对于每个体系结构,创建一个具有该名称的子目录:

|-- my_app_directory/
|       |-- manifest.json
|       |-- my_app.html
|       |-- my_module.nmf
|       +-- css/
|       +-- images/
|       +-- scripts/
|       |-- _platform_specific/
|       |       |-- x86-64/
|       |       |       |-- my_module_x86_64.nexe
|       |       |-- x86-32/
|       |       |       |-- my_module_x86_32.nexe
|       |       |-- arm/
|       |       |       |-- my_module_arm.nexe
|       |       |-- all/
|       |       |       |-- my_module_x86_64.nexe
|       |       |       |-- my_module_x86_64.nexe
|       |       |       |-- my_module_x86_32.nexe

然后在manifest.json文件中,指定这些目录的位置:

...
"platforms": [
    {
      "nacl_arch": "x86-64",
      "sub_package_path": "_platform_specific/x86-64/"
    },
    {
      "nacl_arch": "x86-32",
      "sub_package_path": "_platform_specific/x86-32/"
    },
    {
      "nacl_arch": "arm",
      "sub_package_path": "_platform_specific/arm/"
    },
    {
      "sub_package_path": "_platform_specific/all/"
    }
  ]

你会希望你的 .nmf 指向这些 nexes 的位置。 SDK 构建系统有一个选项可以自动为您完成所有这些,我建议使用它。