發佈你的應用程序

原文連接: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許可下提供的內容

相關文章
相關標籤/搜索