发布你的应用程序

原文连接:https://developer.chrome.com/native-client/devguide/distributingcss

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


发布你的应用

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

便携式Native Client

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

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

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

非便携式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应用。架构

减小用户下载包的大小app

提示: 在多平台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许可下提供的内容

相关文章
相关标签/搜索