google-chrome-extension - Chrome PNaCl 应用内联安装

标签 google-chrome-extension google-chrome-app google-nativeclient

我想要分发 PNa 应用程序、内联安装在不离开当前页面的情况下使用该应用程序。我已经在 CWS 上发布了该应用程序。该应用程序需要一些用户权限。内联安装有效,并且应用程序出现在 Chrome 浏览器应用程序部分中。但是,我收到此错误:

"NaCl module load failed: could not load manifest url"

当我尝试使用以下方式加载应用程序时:

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

这是 testapp.nmf 文件,位于我上传到开发人员仪表板的 .zip pkg 中。

{
  "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 上,并且已成功验证。

最佳答案

观察结果:

  • 您不能在打包应用程序之外使用套接字 API(因为否则无法获取它们的权限)。
  • 一个packaged app大部分是独立的:它不与普通浏览器交互,而是显示在单独窗口中的预设资源集合。
  • 某个网站仍然可以与该应用通信。

似乎您正在尝试同时遵循两个指南,即打包应用程序和网络应用程序。 PNaCl 可以在 Web 应用程序的上下文中工作,只需将 pexe 和 list 放在网站本身上即可;但您需要原始网络访问权限,并且只能在打包应用程序中请求。

您绝对可以使用内联安装将应用程序添加到用户的计算机,但不能将其中的模块嵌入到普通页面中。

您的模块只能嵌入应用程序自己的页面中。因此,如果你想显示一些UI,你需要将其制作为与应用程序打包在一起的页面,并用chrome.app.window.create来显示它。 .

如果您绝对需要向某个网站公开功能,您可以 list it in externally_connectable and use messaging API与应用程序的后台页面进行通信。

应用程序总是有一个事件页面,即page that unloads if it's idle 。因此,如果您只是通过动态创建 <embed> 将模块嵌入到该页面中元素,它可能会失败。但是,如果您使用 externally_connectable方法,您应该能够保持端口打开,这将导致页面继续运行。

关于google-chrome-extension - Chrome PNaCl 应用内联安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28295290/

相关文章:

javascript - Chrome 扩展程序 : must delay page load until javascript finishes

javascript - Chrome打包的app,如何提交表单

c++ - 检查 google-nativeclient 文件系统中是否存在目录?

javascript - 如何使用 Chrome 扩展自动将 YouTube 主页按钮重定向到 "/feed/subscriptions/u"?

javascript - 如何将 html 布局文件插入到 div 中?

javascript - Chrome 应用扩展程序无法与 Oauth Javascript 配合使用

google-chrome - 如何在隐身模式下启用Chrome扩展程序?

linux - 如何将 ZBar 移植到 NaCl

c++ - 关于google-nacl的非常简单的问题

javascript - Google Chrome/Chromium/Webkit 的隐藏 API