15

我需要编写一些谷歌浏览器扩展。问题在于Chrome浏览器的JavaScript API不能提供足够的功能 - 我需要使用本机代码。我考虑编写一个NPAPI插件,它将为扩展提供一些自定义的JS API。谷歌浏览器扩展和NPAPI

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

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

谢谢。

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

+0

在你的编辑中你说这是不可能的,但根据穆罕默德的回答,这仍然是真的吗? – 2010-12-08 20:13:28

回答

16

如果你想在一个CRX多平台,你应该把它们顺序清单内:

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

记住上传NPAPI扩展到商店将只在谷歌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解决方法,那会更好。

+0

dll/so文件应该为x86还是x86-64编译? Google Chrome在哪些版本的PPAPI中起作用? – 2010-11-12 23:33:02

+0

PPAPI目前正在进行中,您可以在这里找到更多关于这方面的信息:http://www.chromium.org/developers/design-documents/pepper-plugin-implementation 那么,编译应该没有关系(afaik ),我有一个64位系统,我通常在那里编译它,它可以在32位平台上运行。 – 2010-11-13 01:53:21

+1

@MohamedMansour对于Linux来说很重要。我必须分别编译用于Linux 32位和64位的* .so文件http://slimtext.org – 2013-03-26 13:58:38