zoukankan      html  css  js  c++  java
  • 发布你的应用程序

    原文链接: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应用。

    减少用户下载包的大小

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

  • 相关阅读:
    机器学习---算法---K-近邻算法
    机器学习---算法---逻辑回归
    进程线程---简单解释
    【codecs】音视频编解码开源项目大汇总
    【life】选择程序员,就是选择一种生活
    【PE】逆向工程(反编译)
    【OpenSource】开源管理平台BlackDuck简介
    【Analysis】开源工程Binwalk:固件分析利器
    【Tools/VS】VS2010 代码块快速折叠快捷键
    【Audio】开源音频库G711和MP3Dec网址
  • 原文地址:https://www.cnblogs.com/SunkingYang/p/11049123.html
Copyright © 2011-2022 走看看