2010-05-17 99 views
1

我一直试图在Mac OS X上使用Google Chrome(6.0.401.1 dev)加载NPAPI插件,但目前为止没有成功。我一直在努力解决这个问题:http://git.webvm.net/?p=npsimple无法在Mac OS X上的Google Chrome中加载NPAPI插件

在Windows上使用Mac和VC++ 2008的gcc我设法得到它在Safari和Firefox在Mac OS X和火狐和谷歌Chrome在Windows上运行,而不是在谷歌Chrome浏览器在Mac OS X

当试图在Mac OS X上调试谷歌浏览器,谷歌浏览器似乎在启动时简单地加载了(并立即删除)插件,但没有实际查找插件中的任何符号或调用任何函数。不过,它似乎正在为每个插件都做到这一点。

此外,当加载一个带有插件嵌入标签的页面时,谷歌浏览器似乎甚至没有加载插件,也没有调用任何函数(甚至没有NP_GetEntryPoints)。谷歌浏览器也不会输出任何错误消息,它只是不加载插件。由于Google Chrome使用不同的进程,我不确定是否使用gdb捕获了所有内容,但我也尝试了所有的开关,如--no-sandbox--single-process--plugin-startup-dialog(顺便说一句,在Mac OS X上似乎不起作用)。我还确定了二进制匹配的体系结构(即Google Chrome的32位)。

有没有人有过类似的问题?有什么我在这里失踪,像编译时的gcc开关什么的?

任何帮助将不胜感激。

+1

- 单进程不是Mac上插件调试的好主意; NPAPI插件在单进程模式下在Mac Chrome中不起作用。 --plugin-startup-dialog不显示对话框,但会将PID记录到控制台并暂停插件。 – smorgan 2010-05-18 17:56:44

回答

1

我进一步调查了这一点。问题是npsimple的Localized.r只在ID 128条目中列出了一个MIME类型,并且它应该是一个MIME类型/文件扩展名对。 WebKit和Gecko显然可以容忍最后一个没有文件扩展名的条目,但是Chromium没有。

有两种方法可以让插件在Chromium工作为Mac:

  1. 的最好方法是使用新的信息。描述在Apple's plugin docs的“注册您的插件”部分中描述的MIME类型的plist风格。至少由Firefox 3.5+,Safari和Chrome支持;您可以将资源作为旧版浏览器的后备资源。

  2. 如果只想使用资源,你可以通过改变MIME输入行中Localized.r添加一个空文件扩展名的MIME声明:

    “应用程序/ x-VND-aplix-富”,‘’

要知道,在某些浏览器(包括铬)可能会被放弃对在可预见的将来老资源型方法的支持,所以我强烈建议使用选项去1

(可以说这是一个铬的bug t它并不像其他浏览器那样处理这种方式,但由于这种方法已被弃用,并且它对我所知的任何实际部署的插件都不是问题,所以它不太可能改变。)

+0

我对此延误表示歉意。我刚刚尝试了你的第一个建议,实际上解决了这个问题。非常感谢! – Roman 2010-09-03 00:49:02

0

我刚刚检查过我的插件,它也适用于您提到的开发版本。 因此原则上这款Google Chrome的开发版本支持第三方NPAPI插件。 (在过去,我们有似乎dev的建立是只支持Flash和QuickTime的插件。)

有些事情要检查:

  • 是包括在已安装插件列表插件,当你键入你浏览器地址栏中的“about:plugins”?
  • 你检查了控制台输出(运行console.app)吗?有时你会在那里找到有价值的信息,例如当加载一个dylib失败时...
  • 这可能是Google Chrome预期的插件包的Info.plist中缺少的东西。
+0

感谢您的回复。插件显示在“about:plugins”页面中。我还检查了控制台,它包含来自沙盒的大量消息,主要是“拒绝mach-lookup”和“拒绝文件读取数据”,但没有任何内容似乎与插件有关。此外,如果我使用“--no-sandbox”运行谷歌浏览器,Chrome浏览器根本没有收到任何日志消息,也没有任何错误。我也重新检查了Info.plist,它适用于Safari和Firefox,所以我不确定Chrome会在Info.plist中期望什么。 – Roman 2010-05-17 14:09:07

0

有几个非常特殊的例外(你想要处理什么样的MIME类型?)应该加载任何有效的NPAPI插件。要做的最好的事情是尽可能详细地提供file a bug,以便我可以调查(我在Mac上为Google Chrome上的插件支持工作)。

+0

感谢您的回复。我目前仍在使用原始示例代码的“application/x-vnd-aplix-foo”的MIME类型。我会很快再试一次,如果它仍然不起作用,我会按照你的建议提交一个错误。谢谢。 – Roman 2010-05-20 03:19:20