Arhn - архитектура программирования

Встроенная установка приложения Chrome PNaCl

Я хочу распространять приложение PNaCl, встроенную установку и использовать приложение не покидая текущую страницу. Я опубликовал приложение на CWS. Приложению требуются некоторые разрешения пользователя. Встроенная установка работает, и приложение появляется в разделе приложений браузера Chrome. Но я получаю эту ошибку:

«Ошибка загрузки модуля NaCl: не удалось загрузить URL-адрес манифеста»

когда я пытаюсь загрузить приложение, используя:

  <embed id="testapp"
         width=0 height=0
         src="testapp.nmf"
         type="application/x-pnacl" />

Это файл testapp.nmf, который находится в архиве .zip, который я загрузил на панель инструментов разработчиков.

{
  "program": {
    "portable": {
      "pnacl-translate": {
        "url": "testapp.pexe"
      },
      "pnacl-debug": {
        "url": "testapp_unstripped.bc"
      }
    }
  }
}

Manifest.json в файле пакета выглядит так:

{
  "name": "testapp",
  "version": "0.0.0.2",
  "manifest_version": 2,
  "description": "TCP/UDP test",
  "offline_enabled": true,
  "icons": {
    "128": "icon128.png"
  },
  "app": {
    "background": {
      "scripts": ["background.js"]
    }
  },
  "permissions": [
    {
        "socket": [
            "tcp-listen:*:*", 
            "tcp-connect", 
            "resolve-host", 
            "udp-bind:*:*", 
            "udp-send-to:*:*"
        ]
    }
  ]
}

HTML-страница размещена на сайте Google blogspot.com и успешно проверена.


  • Что находится в testapp.nmf и где оно находится? 03.02.2015
  • (обычно вы редактируете свой вопрос, добавляя такую ​​новую информацию) И опять же, где этот файл? В вашем приложении? На сайте blogspot? Обе? 03.02.2015
  • Итак, я не понимаю, что вы пытаетесь сделать. PNaCl позволяет вам просто разместите свой модуль на самом сайте, приложение в CWS не требуется. Если вы размещаете этот <embed> на своем сайте, скажем, http://example.com/awesome/, он пытается загрузить http://example.com/awesome/testapp.nmf (и терпит неудачу). 03.02.2015
  • Наконец, каков манифест вашего приложения CWS? Какие разрешения вам были нужны? 03.02.2015
  • Спасибо за ответ Ксан. Что насчет разрешений? Может ли пользователь предоставлять разрешения в этом случае? Я читал в документах, что запрашивать разрешения разрешено только в упакованных приложениях. 03.02.2015
  • Упакованное приложение — это автономная вещь; вы не можете встроить его в другую веб-страницу. Чтобы сделать что-то встраиваемым, вам нужно использовать маршрут типа MIME (я думаю). Тогда имеет смысл использовать расширение. Все зависит от необходимых вам разрешений - пожалуйста, отредактируйте вопрос, чтобы включить манифест. 03.02.2015
  • @Xan Возможно ли обработать тип MIME для фиктивного файла с помощью упакованного приложения NaCl (только для загрузки приложения)? Нужно ли приложению показывать собственную страницу? См. здесь< /а> 05.02.2015

Ответы:


1

Наблюдения:

Похоже, вы пытаетесь следовать сразу двум руководствам: для упакованного приложения и для веб-приложения. PNaCl может работать в контексте веб-приложения, просто разместив pexe и манифест на самом сайте; но вам нужен необработанный доступ к сети, а его можно запросить только в упакованном приложении.

Вы можете использовать встроенную установку, чтобы добавить приложение на компьютер пользователя, но вы не можете встроить модуль из него в обычную страницу.

Ваш модуль может быть встроен только в собственные страницы приложения. Поэтому, если вы хотите показать какой-то пользовательский интерфейс, вам нужно сделать эту страницу упакованной вместе с приложением и показать ее с помощью chrome.app.window.create.

Если вам абсолютно необходимо предоставить функциональность определенному веб-сайту, вы можете перечислить его в externally_connectable и использовать API обмена сообщениями< /a> для связи с фоновой страницей приложения.

В приложении всегда есть страница событий, то есть страница, которая выгружается, если не используется. Поэтому, если вы просто встроите свой модуль в эту страницу, динамически создав элемент <embed>, это может привести к сбою. Однако, если вы используете метод externally_connectable, вы должны иметь возможность держать порт открытым, чтобы страница продолжала работать.

03.02.2015
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..