如何在 linux 中为 chrome 打包一个 NPAPI 插件?

Posted

技术标签:

【中文标题】如何在 linux 中为 chrome 打包一个 NPAPI 插件?【英文标题】:How do I package a NPAPI plugin for chrome in linux? 【发布时间】:2014-02-19 09:11:04 【问题描述】:

我用 FireBreath 开发了一个 NPAPI 插件。我已经阅读了 Chrome NPAPI Plugins 和 Google Chrome Extensions and NPAPI 上的方法,然后按照这种方式将我的 npapi.so 文件包含在 manifest.json 中,如下所示:

"plugins": [   
     "path": "linux_npapi.so" 
]

其实我是把我的插件文件打包成.crx并安装成功,但是当我运行我的测试页面时,插件似乎没有工作。 我已经尝试将我的插件打包到 .xpi 中,并且在 firefox 上运行良好。然后我按照Deploying and updating your plugin 的方法将我的插件文件复制到~/.mozilla/plugins 中。它在 Firefox 上也可以正常工作,但仍然无法在 chrome 上工作。 :( 而且我的插件没有显示在 chrome://plugins 页面中。

Chrome 版本是 32.0.1700.107。

任何帮助将不胜感激...

谢谢...

【问题讨论】:

32 位? 64位?听起来 Chrome 不喜欢它,所以这个问题不太可能与它是一个扩展有关。它是否可以在同一台计算机上的其他浏览器中运行? 我的系统是 64 位 Fedora 19。该插件在 Firefox 中运行良好。我又测试了一下,chrome好像没有加载插件... 仔细检查以确保您使用的是 64 位版本的 chrome 问题解决了!非常感谢!我检查了我的 chrome 并发现插件加载到 64 位 chrome 中,但它没有加载到 32 位 chrome 中。我对此很困惑。所以我尝试找到我的插件的 .so 文件。当我在 64 位 chrome 上安装带有扩展页面的插件时,.so 文件的路径是 /root/.config/google-chrome/Default/Extensions 。当我卸载 64 位 chrome 并安装 32 位 chrome 时,插件显示在32 位 chrome 上的扩展页面,但插件似乎没有加载到其中。你知道为什么会这样吗?非常感谢... 我尝试将 .so 文件复制到 ~/.mozilla/plugins 中,然后在 64 位和 32 位 chrome 上进行测试。同样的问题表明,插件不是在 32 位 chrome 上加载,而是在 64 位 chrome 上加载。你能向我解释为什么会这样吗?谢谢... 【参考方案1】:

当您在 linux 上构建插件时,您可以构建 32 位或 64 位。如果您构建它 32 位,它将在 32 位浏览器中加载,而 64 位将在 64 位浏览器中加载。您需要确保根据需要正确构建它。

这听起来像是您的问题 - 您正在尝试在 64 位进程上加载 32 位插件和/或反之亦然。那是行不通的。

不幸的是,我不知道如何让 cmake 在 64 位系统上构建 32 位。

【讨论】:

以上是关于如何在 linux 中为 chrome 打包一个 NPAPI 插件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Jenkins env 变量中为 Headless Chrome 配置 CHROME_BIN 路径

如何在 Chrome 中为 WebRTC 调用者设置远程描述而不会出错?

cssRules/rules 在 Chrome 中为空

Chrome插件位置以及如何插件打包

将文件类型与 Chrome 打包应用程序相关联

如何使用命令行在Macos上打包Chrome扩展程序?