0

おそらくこれはFirefox拡張機能でFirebreathで生成されたプラグインの使用に関連していますか?; しかし、私の質問はおそらくもっと具体的なので、ここに行きます...

私はLinux(Ubuntu 11.04)に取り組んでおり、FireBreathを使用してMozilla / Firefox(Firefox 7)プラグインを構築しました。このプラットフォームで作成されたプラグインは" npXXX.so"ファイルであり、これはでシンボリックリンクされてい~/.mozilla/pluginsます。次に、このプラグインを使用する拡張機能をコーディングしました。シンボリックリンクを除けば、他に何も必要ないようです。すべてがスマッシングするだけで機能するようです:)

したがって、「firefoxはXPIを介したプラグインのインストールをサポートしています。これはFireBreathチームによって推奨されていません」ということを知っているので、拡張機能とプラグインをXPIファイルにパッケージ化したいと思います。だから、私はインストール可能なバンドルの構造-MDNについて少し読んでいます、そして私はこれらの2つの可能性を見ることができます:

/components/*   XPCOM components (*.js, *.dll), and interface files from *.xpt  (>=1.7)
...
/plugins/*  NPAPI Plugins   (>=1.8)
...
binary-component components/linux/mycomponent.so ABI=Linux_x86-gcc3

さて、「プラグイン用の古いXPCOMベースおよびLiveConnectベースのAPIは使用しないでください。」と書かれているので、「/components」ディレクトリは使用しないでください(上記のページに例として示されている場合でも)。そして、これがどこにも明示的に述べられているのを見つけることはできませんが、FireBreathはNPAPIプラグインを構築していると思います-おそらく「/plugins」が進むべき道です。(「」についても言及/platformされていますが、Firefox> 3.6では非推奨になっていることを明確に示しています)。

 

さて、これまでのところとても良いです...それで私はプラグインファイルをplugins/linux拡張ディレクトリ内にコピーしようとします:

cp -L ~/.mozilla/plugins/npXXX.so plugins/linux/

...次に、次のように挿入しますchrome.manifest

binary-component    plugins/linux/npXXX.so ABI=Linux_x86-gcc4

...次に、拡張ディレクトリ全体(プラグインを含む)を.xpiとして圧縮し、別のコンピューターにインストールしてみます。そこで、.xpiが正常にインストールされ、.soファイルがプロファイルのextensions/XXX/plugins/linux/ディレクトリの下に実際に解凍されます。拡張子のすべてのクロスプラットフォーム(javascript)コードは正常に機能します。プラグインが見つからないことを除いて。

もちろん、ユーザー自身が拡張子.so~/.mozilla/plugins/;にシンボリックリンクすることもできます。しかし、私はそのユーザーを惜しまないようにしたいと思います:)

 

この種のパッケージングについてはどうすればよいですか?推奨される方法はありますか?

よろしくお願いし
ます。

 

編集:プラグインをツールキットバンドルとして出荷することがわかりました-MDNのみを要求しinstall.rdf、aplugins/obj.soが必要です。次に、Linux上のFirefox 4、5、6でQuake Liveを実行していることを発見しました[内部の修正]QuakeLivePlugin_433-modded_ff10.xpiを参照しており、実際にそのような単純な構造に従っています。これをインストールすると、両方が得られます。 Quake拡張機能とQuakeプラグイン(そして、エラーコンソールが「chromeマニフェストファイルを読み取れませんでした」/path/to/extensions/quakeliveplugin@idsoftware.com/chrome.manifest'。」と文句を言っていても)....しかし、試してみると私のFireBreathプラグインでも同じです(たとえば、install.rdfとプラグインだけ/plugins)、拡張機能のみが表示されます-プラグインはありません(そして合理的なエラーメッセージもありません)。これはFireBreathの問題でしょうか?

4

1 に答える 1

1

さて、私はこれを答えとして投稿します-FireBreathプラグインが実際に.xpi拡張子として単純な「ツールキットバンドル」の方法でパッケージ化されて動作することを確認しました。

基本的に、開発用PCのFirefoxプロファイルをクリアし、そこにプラグインを含む.xpiをインストールしようとしました。開発用PCでは、プラグインはabout:pluginsに表示され、正常に実行されます(profile/で解凍された場合でも) 〜/ .mozilla /pluginsではなくextensions/EXT / plugins / obj.so)...実際、拡張機能とプラグインの両方を別々の.xpiにパッケージ化し、次に推奨されているように1つにマージしました。複数アイテムパッケージ-MDN-そしてそれもうまく機能します(マージされたxpiをロードすると、1つは2つの拡張機能のインストールについてプロンプトが表示されます-1つは1つを運ぶプラグイン用で、もう1つは「プレーン」拡張機能用です)...

したがって、問題は他のテストコンピューターのみにありました-そして問題はプラグインでGnomeライブラリを使用していることであるようです、そして私の開発用PCはUbuntu11.04です-このテストPCはUbuntu10.04だったと思います...だから、おそらく、問題はプラグインビルドの互換性のないGnomeライブラリです。残念ながら、次の場合でも、Firefoxから多くのエラーが返されることはありません。

NSPR_LOG_MODULES=IPCPlugins:5 NSPR_LOG_FILE=/tmp/plugins.log /path/to/firefox -P myprofile

(...マルチプロセスプラグインのログ記録-MDN-で推奨されているように、/ tmp / plugins.logは空のままです)。問題のあるマシンでFirefoxが吐き出すのは、次のようなものだけです。

WARNING: Application calling GLX 1.3 function "glXCreatePixmap" when GLX 1.3 is not supported!  This is an application bug!
WARNING: Application calling GLX 1.3 function "glXDestroyPixmap" when GLX 1.3 is not supported!  This is an application bug!
(firefox:6548): GLib-GObject-WARNING **: /build/buildd/glib2.0-2.24.1/gobject/gsignal.c:1149: unable to lookup signal "text-insert" for non instantiatable type `AtkText'

...そしてこれがプラグインと関係があるかどうかはわかりません...しかし、少なくともパッケージング部分は現在機能していることが確認されたと思います:)乾杯!

 

編集:しばらくすると、テストPC上のFirefoxは次のメッセージを吐き出しました(このメッセージがすぐにポップアップすることを期待していましたが):

LoadPlugin: failed to initialize shared library /path/to/profile/extensions/extXXX/plugins/npXXX.so [/usr/lib/libstdc++.so.6: version ``GLIBCXX_3.4.14' not found (required by /path/to/profile/extensions/extXXX/plugins/npXXX.so)]

...これは最終的に私が抱えていたビルドの問題であることを確認します。

于 2011-10-29T23:00:41.250 に答える