从Chrome Web Store减少Native Client安装的网络流量

时间:2015-03-14 12:56:37

标签: google-nativeclient

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

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

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

由于

1 个答案:

答案 0 :(得分:2)

是的,您可以在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指向这些nex的位置。 SDK构建系统可以自动为您完成所有这些操作,我建议您使用它。