发布你的应用程序

原文链接:https://developer.chrome.com/native-client/devguide/distributing

注意:已针对ChromeOS以外的平台公布了此处所述技术的弃用。
请访问我们的 迁移指南 了解详情。


发布你的应用

本文档介绍如何通过Chrome Web Store(CWS)在Web上分发Portable Native Client应用程序和Native Client应用程序 。

便携式Native Client

默认情况下,为网页启用Portable Native Client,因此不需要单独的分发步骤。使PNaCl成为Web应用程序的一部分就像嵌入指向pexe的清单文件一样简单。有关详细信息,请参阅 技术概述

/native-client/images/nacl-in-a-web-app.png

使用Web应用程序分发PNaCl模块的唯一约束是遵循同源策略PNaCl清单和 pexe必须使用HTML从同一域提供,或者应使用CORS机制将它们安全地托管在不同的域上。

非便携式Native Client

NaCl模块仅允许通过Chrome Web Store(CWS)分发的应用程序 CWS要求已到位,以防止针对特定体系结构(例如,x86-32,x86-64或或更高版本)编译的Native Client可执行文件(nexe)的扩散臂)。

通常,通过Chrome Web Store分发应用程序的注意事项和指南也适用于包含NaCl模块的应用程序。以下是相关文档的几点建议:

在本文档中,我们将仅关注特定于包含NaCl模块的应用程序的分发问题。

Chrome应用

Chrome应用是Chrome网上应用店中托管的特殊zip文件(扩展名为.crx)。此文件包含所有应用程序部分:Chrome Web Store清单文件(manifest.json),图标和所有常规Native Client应用程序文件。有关创建Chrome应用的详细信息,请参阅Chrome应用。

减少用户下载包的大小

扫描二维码关注公众号,回复: 2365897 查看本文章

提示: 在多平台zip文件中打包应用程序可以显着降低应用程序的下载和存储要求。

如上所述,要将Chrome应用程序上传到CWS,您必须创建一个包含应用程序所需资源的zip文件,包括用于多种体系结构的.nexe文件(x86-64,x86-32和ARM)。在Chrome 28之前,当用户安装您的应用时,他们必须从CWS下载.crx文件,其中包含所有包含的.nexe文件。

从Chrome 28开始,Chrome网上应用店包含一项称为 多平台zip文件的功能。此功能允许您以减少用户下载包大小的方式构建应用程序目录和zip文件。以下是此功能的工作原理:

  • 您仍然将所有.nexe文件包含在上载到CWS的zip文件中,但是您为特定体系结构指定了特定的.nexe文件(以及适当的其他文件)。
  • Chrome网上应用店会重新打包您的应用,以便用户只下载其特定架构所需的文件。

以下是如何使用此功能:

  1. 创建一个名为的目录_platform_specific。将此目录放在CWS清单文件所在的同一级别 manifest.json

  2. 为您支持的每个特定体系结构创建子目录,并在相关子目录中添加每个体系结构的文件。

    这是一个示例app目录结构:

    |-- 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

    请注意有关app目录结构的一些要点:

    • 特定于体系结构的子目录:

      • 可以有任意名字;

      • 必须直接在_platform_specific目录下; 和

      • 必须列在CWS清单文件中(参见下面的步骤3)。

    • 您可以包含一个fallback子目录,该子目录提供包含所有特定于体系结构的文件的下载包。(在上面的示例中,这是all/子目录。)如果用户具有不支持多平台zip文件的早期版本的Chrome(Chrome 28之前),则使用此文件夹。

    • 您不能直接在文件夹中包含任何文件 _platform_specific。所有特定于体系结构的文件必须位于特定于体系结构的子目录之下。

    • _platform_specific所有下载包中都包含不在该目录下的文件。(在上面的例子中,包括my_app.htmlmy_module.nmfcss/images/scripts/目录。)

  3. 修改CWS清单文件,manifest.json以便它指定哪个子目录_platform_specific对应于哪个体系结构。

    CWS清单文件必须包含新名称/值对,其中名称为platforms,值为数组。该数组具有每个Native Client体系结构的对象,具有两个名称/值对:

    名称
    nacl_arch x86-64x86-32arm
    sub_package_path _platform_specific包含指定NaCl体系结构文件的目录路径(以...开头)

    这是一个示例manifest.json文件:

    {
      "name": "My Reminder App",
      "description": "A reminder app that syncs across Chrome browsers.",
      "manifest_version": 2,
      "minimum_chrome_version": "28",
      "offline_enabled": true,
      "version": "0.3",
      "permissions": [
        {"fileSystem": ["write"]},
        "alarms",
        "storage"
      ],
      "app": {
        "background": {
          "scripts": ["scripts/background.js"]
        }
      },
      "icons": {
        "16": "images/icon-16x16.png",
        "128": "images/icon-128x128.png"
      },
      "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/"
        }
      ]
    }

    请注意上面CWS清单文件中的最后一个条目,它指定了 sub_package_path没有相应的文件nacl_arch。此条目标识回退目录,如果用户体系结构与列出的任何NaCl体系结构不匹配,或者用户使用的旧版Chrome不支持多平台zip文件,则该目录包含在下载包中。

  4. 根据需要修改应用程序,以便将文件用于正确的用户体系结构。

    要引用特定于体系结构的文件,请使用JavaScript API chrome.runtime.getPlatformInfo()。举个例子,如果你在目录体系结构相关的文件 x86-64x86-32以及arm,你可以使用下面的JavaScript代码来创建这些文件的路径:

    function getPath(name) {
      return '_platform_specific/' +
        chrome.runtime.getPlatformInfo().nacl_arch +
        '/' + name;
    }
  5. 测试您的应用程序,创建一个zip文件,并像以前一样将应用程序上传到CWS。

Chrome应用的其他注意事项

  • 在CWS中的应用程序说明中,请务必提及您的应用程序是仅适用于Chrome浏览器的Native Client应用程序。另外,请务必确定您的应用程序所需的最低版Chrome。
  • 托管和打包的应用程序在CWS清单中有一个“启动”参数。此参数仅在应用(不是扩展程序)中显示,并告知Google Chrome在用户启动已安装的应用时要显示的内容。例如:

    "launch": {
      "web_url": "http://mail.google.com/mail/"
    }
  • 如果要使用Pepper FileIO API 编写本地数据 ,则必须在Chrome Web Store清单文件中设置“unlimitedStorage”权限,就像使用HTML5 File API的JavaScript应用程序一样。
  • 对于Chrome应用,您只能使用应用内购买。
  • 您可以将应用程序放在Google Web Store中,只能访问某些人进行测试。有关详细信息,请参阅发布以测试帐户

延期

封装应用的特定于NaCl的注释也 适用于扩展。

托管申请

.html文件,.nmf文件(Native Client清单文件)和.nexe文件必须从同一个域提供,Chrome Web Store清单文件必须指定正确的,经过验证的域。其他文件可以从相同或其他域提供。

此外,请参阅Chrome应用的其他注意事项

注册Native Client模块以处理MIME类型

如果您希望Chrome使用Native Client模块显示特定类型的内容,则可以将该内容的MIME类型与Native Client模块相关联。使用nacl_modulesChrome网上应用店清单文件中的属性将Native Client模块注册为一种或多种特定MIME类型的处理程序。例如,下面代码段中的粗体代码将Native Client模块注册为OpenOffice电子表格MIME类型的内容处理程序:

{
   "name": "My Native Client Spreadsheet Viewer",
   "version": "0.1",
   "description": "Open spreadsheets right in your browser.",
   "nacl_modules": [{
      "path": "SpreadsheetViewer.nmf",
      "mime_type": "application/vnd.oasis.opendocument.spreadsheet"
   }]
}

“path”的值是应用程序目录中Native Client清单文件(.nmf)的位置。有关Native Client清单文件的详细信息,请参阅清单文件

“mime_type”的值是您希望Native Client模块处理的特定MIME类型。每种MIME类型只能与一个.nmf文件关联,但单个.nmf文件可能会处理多种MIME类型。以下示例显示了一个扩展,其中包含两个处理三种MIME类型的.nmf文件。

{
   "name": "My Native Client Spreadsheet and Document Viewer",
   "version": "0.1",
   "description": "Open spreadsheets and documents right in your browser.",
   "nacl_modules": [{
     "path": "SpreadsheetViewer.nmf",
     "mime_type": "application/vnd.oasis.opendocument.spreadsheet"
   },
   {
      "path": "SpreadsheetViewer.nmf",
      "mime_type": "application/vnd.oasis.opendocument.spreadsheet-template"
   },
   {
      "path": "DocumentViewer.nmf",
      "mime_type": "application/vnd.oasis.opendocument.text"
   }]
}

nacl_modules属性是可选的 - 仅当您希望Chrome使用Native Client模块显示特定类型的内容时才指定此属性。

CC-By 3.0许可下提供的内容

猜你喜欢

转载自blog.csdn.net/y601500359/article/details/81197866
今日推荐