OLD | NEW |
1 .. _distributing: | 1 .. _distributing: |
2 | 2 |
3 ############################# | 3 ############################# |
4 Distributing Your Application | 4 Distributing Your Application |
5 ############################# | 5 ############################# |
6 | 6 |
7 .. contents:: | 7 .. contents:: |
8 :local: | 8 :local: |
9 :backlinks: none | 9 :backlinks: none |
10 :depth: 2 | 10 :depth: 2 |
11 | 11 |
12 This document describes how to distribute Portable Native Client applications | 12 This document describes how to distribute Portable Native Client applications |
13 on the web, and Native Client applications through the | 13 on the web, and Native Client applications through the |
14 `Chrome Web Store </chrome/web-store/docs/>`_ (CWS). | 14 `Chrome Web Store </webstore>`_ (CWS). |
15 | 15 |
16 Portable Native Client | 16 Portable Native Client |
17 ====================== | 17 ====================== |
18 | 18 |
19 Portable Native Client is enabled by default for web pages, so no separate | 19 Portable Native Client is enabled by default for web pages, so no separate |
20 distribution step is requred. Making PNaCl a part of your web application is as | 20 distribution step is requred. Making PNaCl a part of your web application is as |
21 simple as embedding a manifest file that points to a **pexe**. See the | 21 simple as embedding a manifest file that points to a **pexe**. See the |
22 :doc:`technical overview <../overview>` for more details. | 22 :doc:`technical overview <../overview>` for more details. |
23 | 23 |
24 .. image:: /images/nacl-in-a-web-app.png | 24 .. image:: /images/nacl-in-a-web-app.png |
(...skipping 11 matching lines...) Expand all Loading... |
36 NaCl modules are only allowed for applications distributed through the `Chrome | 36 NaCl modules are only allowed for applications distributed through the `Chrome |
37 Web Store (CWS) <https://chrome.google.com/webstore/category/apps>`_ | 37 Web Store (CWS) <https://chrome.google.com/webstore/category/apps>`_ |
38 The CWS requirement is in place to prevent the proliferation of Native Client | 38 The CWS requirement is in place to prevent the proliferation of Native Client |
39 executables (**nexe**\s) compiled for specific architecures (e.g., x86-32, | 39 executables (**nexe**\s) compiled for specific architecures (e.g., x86-32, |
40 x86-64, or ARM). | 40 x86-64, or ARM). |
41 | 41 |
42 In general, the considerations and guidelines for distributing applications | 42 In general, the considerations and guidelines for distributing applications |
43 through the Chrome Web Store apply to applications that contain NaCl modules as | 43 through the Chrome Web Store apply to applications that contain NaCl modules as |
44 well. Here are a few pointers to relevant documentation: | 44 well. Here are a few pointers to relevant documentation: |
45 | 45 |
46 * `CWS Overview <https://developers.google.com/chrome/web-store/docs/>`_ | 46 * `CWS Overview </webstore>`_ |
47 * `Choosing an App Type <https://developers.google.com/chrome/web-store/docs/cho
osing>`_ | 47 * `Choosing an App Type </webstore/choosing>`_ |
48 * `Getting started with packaged apps <http://developer.chrome.com/apps/about_ap
ps.html>`_ | 48 * `Getting started with packaged apps </apps/about_apps>`_ |
49 * `Hosted apps <https://developers.google.com/chrome/apps/docs/developers_guide>
`_ | 49 * `Hosted apps <https://developers.google.com/chrome/apps/docs/developers_guide>
`_ |
50 * `Chrome extensions <http://developer.chrome.com/extensions/index.html>`_ | 50 * `Chrome extensions </extensions>`_ |
51 | 51 |
52 In this document, we'll focus only on distribution issues specific to | 52 In this document, we'll focus only on distribution issues specific to |
53 applications that contain NaCl modules. | 53 applications that contain NaCl modules. |
54 | 54 |
55 .. _distributing_packaged: | 55 .. _distributing_packaged: |
56 | 56 |
57 Packaged application | 57 Packaged application |
58 -------------------- | 58 -------------------- |
59 | 59 |
60 A packaged application is a special zip file (with a .crx extension) hosted in | 60 A packaged application is a special zip file (with a .crx extension) hosted in |
61 the Chrome Web Store. This file contains all of the application parts: A Chrome | 61 the Chrome Web Store. This file contains all of the application parts: A Chrome |
62 Web Store manifest file (manifest.json), an icon, and all of the regular Native | 62 Web Store manifest file (manifest.json), an icon, and all of the regular Native |
63 Client application files. Refer to | 63 Client application files. Refer to |
64 `Packaged Apps <https://developer.chrome.com/apps/about_apps.html>`_ | 64 `Packaged Apps </apps/about_apps>`_ |
65 for more information about creating a packaged application. | 65 for more information about creating a packaged application. |
66 | 66 |
67 Reducing the size of the user download package | 67 Reducing the size of the user download package |
68 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | 68 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
69 | 69 |
70 .. Note:: | 70 .. Note:: |
71 :class: note | 71 :class: note |
72 | 72 |
73 **Tip:** | 73 **Tip:** |
74 Packaging an app in a multi-platform zip file can significantly reduce the | 74 Packaging an app in a multi-platform zip file can significantly reduce the |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
215 ``sub_package_path`` without a corresponding ``nacl_arch``. This entry | 215 ``sub_package_path`` without a corresponding ``nacl_arch``. This entry |
216 identifies the fallback directory, which is included in the download | 216 identifies the fallback directory, which is included in the download |
217 package if the user architecture does not match any of the listed NaCl | 217 package if the user architecture does not match any of the listed NaCl |
218 architectures, or if the user is using an older version of Chrome that | 218 architectures, or if the user is using an older version of Chrome that |
219 does not support multi-platform zip files. | 219 does not support multi-platform zip files. |
220 | 220 |
221 #. Modify your application as necessary so that it uses the files for the | 221 #. Modify your application as necessary so that it uses the files for the |
222 correct user architecture. | 222 correct user architecture. |
223 | 223 |
224 To reference architecture-specific files, use the JavaScript API | 224 To reference architecture-specific files, use the JavaScript API |
225 `chrome.runtime.getPlatformInfo() <http://developer.chrome.com/trunk/extensio
ns/runtime.html#method-getPlatformInfo>`_. | 225 `chrome.runtime.getPlatformInfo() </extensions/runtime.html#method-getPlatfor
mInfo>`_. |
226 As an example, if you have architecture-specific files in the directories | 226 As an example, if you have architecture-specific files in the directories |
227 ``x86-64``, ``x86-32``, and ``arm``, you can use the following JavaScript | 227 ``x86-64``, ``x86-32``, and ``arm``, you can use the following JavaScript |
228 code to create a path for the files: | 228 code to create a path for the files: |
229 | 229 |
230 .. naclcode:: | 230 .. naclcode:: |
231 | 231 |
232 function getPath(name) { | 232 function getPath(name) { |
233 return '_platform_specific/' + | 233 return '_platform_specific/' + |
234 chrome.runtime.getPlatformInfo().nacl_arch + | 234 chrome.runtime.getPlatformInfo().nacl_arch + |
235 '/' + name; | 235 '/' + name; |
(...skipping 22 matching lines...) Expand all Loading... |
258 "web_url": "http://mail.google.com/mail/" | 258 "web_url": "http://mail.google.com/mail/" |
259 } | 259 } |
260 | 260 |
261 * If you want to write local data using the Pepper | 261 * If you want to write local data using the Pepper |
262 `FileIO </native-client/peppercpp/classpp_1_1_file_i_o>`_ | 262 `FileIO </native-client/peppercpp/classpp_1_1_file_i_o>`_ |
263 API, you must set the 'unlimitedStorage' permission in your Chrome Web | 263 API, you must set the 'unlimitedStorage' permission in your Chrome Web |
264 Store manifest file, just as you would for a JavaScript application that | 264 Store manifest file, just as you would for a JavaScript application that |
265 uses the HTML5 File API. | 265 uses the HTML5 File API. |
266 * For packaged applications, you can only use in-app purchases. | 266 * For packaged applications, you can only use in-app purchases. |
267 * You can place your application in the Google Web Store with access only to | 267 * You can place your application in the Google Web Store with access only to |
268 certain people for testing. See | 268 certain people for testing. See `Publishing to test accounts |
269 `Publishing to test accounts <https://developers.google.com/chrome/web-store/d
ocs/publish>`_ | 269 </webstore/publish>`_ for more information. |
270 for more information. | |
271 | 270 |
272 Extension | 271 Extension |
273 --------- | 272 --------- |
274 | 273 |
275 The NaCl-specific notes for a :ref:`package application <distributing_packaged>` | 274 The NaCl-specific notes for a :ref:`package application <distributing_packaged>` |
276 apply to extensions as well. | 275 apply to extensions as well. |
277 | 276 |
278 Hosted application | 277 Hosted application |
279 ------------------ | 278 ------------------ |
280 | 279 |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
336 { | 335 { |
337 "path": "DocumentViewer.nmf", | 336 "path": "DocumentViewer.nmf", |
338 "mime_type": "application/vnd.oasis.opendocument.text" | 337 "mime_type": "application/vnd.oasis.opendocument.text" |
339 }] | 338 }] |
340 } | 339 } |
341 | 340 |
342 The ``nacl_modules`` attribute is optional---specify this attribute only if | 341 The ``nacl_modules`` attribute is optional---specify this attribute only if |
343 you want Chrome to use a Native Client module to display a particular type of | 342 you want Chrome to use a Native Client module to display a particular type of |
344 content. | 343 content. |
345 | 344 |
OLD | NEW |