日期:2014-05-16  浏览次数:20588 次

Linux下firefox插件开发

引用自:

http://www.lupaworld.com/bbs/thread-22583-1-1.html

?

机器环境:Linux 2.6.12-1.1456.cocreate.3
Firefox版本:firefox-1.5.0.3
编译Firefox:
? 1)安装mozilla开发包;
? 2)从 ftp://ftp.mozilla.org/pub/mozilla.org/mozilla/ 下载Firefox源码firefox-1.5.0.3-source.tar.bz2,下载中文语言包firefox-langpacks-cn-1.5.0.3.tar.bz2;
? 3)以上两个文件下载完毕后放到/usr/src/redhat /SOURCES/,然后在/usr/src/redhat/SPECS/编写编译打包用的spec文件firefox-1.5.x,关于RPM、SPEC等可参考
http://www.redhat.com/docs/manua ... f-guide/index.html;
?? ?其中语言安装脚本部分可以这么写:
# Install langpacks
%{__mkdir_p} $RPM_BUILD_ROOT%{_libdir}/firefox/extensions
%{__tar} xjf %{SOURCE23}
for langpack in `ls firefox-langpacks/*.xpi`; do
??language=`basename $langpack .xpi`
???extensiondir=$RPM_BUILD_ROOT%{_libdir}/firefox/extensions/langpack-$language@firefox.mozilla.org
??%{__mkdir_p} $extensiondir
??unzip $langpack -d $extensiondir
??find $extensiondir -type f | xargs chmod 644
??????????????????????????????????????????????????????????????????????????????????????????????????????
??langtmp=%{_tmpdir}/%{name}/langpack-$language
??%{__mkdir_p} $langtmp
??jarfile=$extensiondir/chrome/$language.jar
??unzip $jarfile -d $langtmp
??find $langtmp -type f | xargs chmod 644
??%{__rm} -rf $jarfile
??cd $langtmp
??zip -r -D $jarfile locale
??%{__rm} -rf locale
??cd -
??done
??%{__rm} -rf firefox-langpacks

? 4)运行rpmbuild -bl firefox-1.5.x 确认%files的路径等正确,然后编译:rpmbuild -ba firefox-1.5.x,经过大约40几分钟(如果机器配置差的话需要更长的时间),如果没有出错则编译成功,生成的文件在/usr/src /redhat/RPMS/i386/和/usr/src/redhat/SRPMS/;

下面进入主题,编写插件:
? 为简单起见可以将firefox源码包中的插件simple目录拷贝一份出来,然后直接修改相应文件,编写代码。完成后需要生成生成头文件和xpt文件,命令如下:
(1)生成头文件
???/usr/lib/mozilla-1.7.12/xpidl -m header -I/usr/share/idl/mozilla-1.7.12
testplug.idl
(2)生成xpt文件
/usr/lib/mozilla-1.7.12/xpidl -m typelib -I/usr/share/idl/mozilla-1.7.12
testplug.idl

写spec文件,如下:
。。。
%prep
rm -rf %{buildroot}
??????????????????????????????????????????????????????????????????????????????????????????????????????
%setup -n %{name} -q
??????????????????????????????????????????????????????????????????????????????????????????????????????
%build
./configure
%{__make}

%install
%{__mkdir} -p %{buildroot}%{_libdir}/firefox/{plugins,components}
install -m755 src/.libs/libtestplug.so %{buildroot}%{_libdir}/firefox/plugins
install -m755 src/testplug.xpt ??????? %{buildroot}%{_libdir}/firefox/components
install -m644 demo.html ??????? %{buildroot}%{_libdir}/firefox/

%clean
rm -rf %{buildroot}
??????????????????????????????????????????????????????????????????????????????????????????????????????
%files
%defattr (-,root,root)
%{_libdir}/firefox/plugins/libtestplug.so
%{_libdir}/firefox/components/testplug.xpt
%{_libdir}/firefox/demo.html
??????????????????????????????????????????????????????????????????????????????????????????????????????
%changelog
。。。

编译成功后启动firefox就可以看到测试了。


<参考>
mozilla/modules/plugin/tools/sdk/samples(firefox插件sample文件)
http://www.mozilla.org/project s/plugins/npruntime.html
http://kb.mozillazine.org/Extension_development