8/24/2006

Linux下firefox插件开发

最近在这方面的工作,抽时间总结一下。

终于有点时间了 :)
机器环境: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/manuals/linux/RHL-7-Manual/ref-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/projects/plugins/npruntime.html
http://kb.mozillazine.org/Extension_development

没有评论: