【问题标题】:Google Chrome Extensions and NPAPIGoogle Chrome 扩展程序和 NPAPI
【发布时间】:2010-11-12 12:18:49
【问题描述】:

我需要编写一些 Google Chrome 扩展程序。问题是 Chrome JavaScript API 没有给我足够的能力——我需要使用本机代码。我考虑过编写一个 NPAPI 插件,该插件将提供一些自定义 JS API 的扩展。

是否可以将扩展,加上自定义的NPAPI插件打包在一个.crx中,然后上传到Chrome Extensions Store

这种方法的另一个问题是NPAPI插件会有很多版本:Linux、Windows、OS X、x86、x86-64等。是否可以将所有这些都打包在crx中并使用最好的版本?

谢谢。

编辑: 阅读this 后,我意识到不可能在一个 crx 中优雅地解决多平台问题。但是 - 是否可以将每个平台的不同 crx-s 上传到 Chrome 扩展商店?

【问题讨论】:

  • 在您的编辑中,您说这是不可能的,但根据 Mohamed 在下面的回答,这仍然是真的吗?

标签: google-chrome cross-platform google-chrome-extension packaging npapi


【解决方案1】:

如果您想在一个 CRX 中使用多平台,您应该在清单中按以下顺序放置它们:

"plugins": [
   { "path": "plugin-windows.dll" },
   { "path": "plugin-linux.so" },
   { "path": "plugin-mac.plugin" }
]

请记住,将您的 NPAPI 扩展程序上传到商店只能在 Google Chrome 扩展程序中使用。对于 Google Chrome OS(使用 Google Chrome),您将无法使用 NPAPI。

但是您应该研究 PPAPI,这将是为扩展进行插件开发的推荐方式:

http://src.chromium.org/viewvc/chrome/trunk/src/ppapi/

与此同时,扩展中的 NPAPI,您需要遵循本指南(效果很好):

http://code.google.com/chrome/extensions/npapi.html

请记住,您真的需要在您的扩展程序中使用 NPAPI 吗?如果您能找到 HTML5 解决方法,那就更好了。

【讨论】:

  • 应该为 x86 或 x86-64 编译 dll/so 文件? PPAPI 在哪些版本的 Google Chrome 中工作?
  • PPAPI 目前正在进行中,您可以在此处找到更多相关信息:chromium.org/developers/design-documents/… 好吧,编译不重要(afaik),我有一个 64 位系统,我在那里正常编译它适用于 32 位平台。
  • @MohamedMansour 对于 Linux,这很重要。对于项目slimtext.org,我必须为 Linux 32 位和 64 位分别编译 *.so 文件
  • @TylerLong 是的,对于 Linux,你需要不同的架构 :)