Mozilla扩展系列链接:

1浅谈基于Mozilla Thunderbird的扩展开发

2基于Mozilla平台的扩展开发(续)----XPCOM组件篇

3基于Mozilla Thunderbird的扩展开发(三)---如何获取邮件的完整信息

4基于Mozilla Thunderbird的扩展开发(四)---修改源代码实现自动保存附件

5基于Mozilla Thunderbird的扩展开发(五)---进程间通信之Socket篇(上)

6基于Mozilla Thunderbird的扩展开发(六)---进程间通信之Socket篇(下)

7, 基于Mozilla Thunderbird的扩展开发(七)---工欲善其事,必先利其器

Mozilla最为人诟病的地方就是没有称手的开发工具,这对于我们这些被微软惯坏的开发人员来说,如果没有Visual Studio这样舒服的工具的话,谁会投入你的怀抱呢?本文就希望从三个方面介绍下我所了解到的Mozilla 平台下的开发工具及一些小技巧。

最原始的方法当然是全部手工打造,从插件的编写,到打包,这样做的好处是对Mozilla平台下插件的开发有比较深入的了解,但缺点就是每次做一些小的修改后都需要重复进行压缩,打包等一系列繁杂的工序,如果你喜欢这种方法,可以参考我这篇文章:《浅谈基于Mozilla ThunderBird的扩展开发》,也可以参考Mozilla开发中心这篇文章《Building an Extension》。

      每次修改代码后就得自己手动重新打包,发布,安装,你对这些已经感到厌烦了吗?好的,那就想办法脱离苦海吧。我们仔细分析后发现,就是一个打包的问题,因此我们就可以使用Ant来完成这些琐碎的打包工作,下面就是《浅谈基于Mozilla ThunderBird的扩展开发》中使用的build.xml文件:

基于Mozilla Thunderbird的扩展开发(七)---工欲善其事,必先利其器<?xml version="1.0"?>
基于Mozilla Thunderbird的扩展开发(七)---工欲善其事,必先利其器
<project name="helloworld" default="createxpi">
基于Mozilla Thunderbird的扩展开发(七)---工欲善其事,必先利其器  
<delete file="helloworld.xpi"/>
基于Mozilla Thunderbird的扩展开发(七)---工欲善其事,必先利其器  
<delete file="helloworld.jar"/>
基于Mozilla Thunderbird的扩展开发(七)---工欲善其事,必先利其器  
<target name="createjar">
基于Mozilla Thunderbird的扩展开发(七)---工欲善其事,必先利其器    
<zip destfile="helloworld.jar" compress="false">
基于Mozilla Thunderbird的扩展开发(七)---工欲善其事,必先利其器        
<fileset dir="chrome">
基于Mozilla Thunderbird的扩展开发(七)---工欲善其事,必先利其器            
<include name="content/**"/>
基于Mozilla Thunderbird的扩展开发(七)---工欲善其事,必先利其器        
</fileset>
基于Mozilla Thunderbird的扩展开发(七)---工欲善其事,必先利其器    
</zip>
基于Mozilla Thunderbird的扩展开发(七)---工欲善其事,必先利其器  
</target>
基于Mozilla Thunderbird的扩展开发(七)---工欲善其事,必先利其器
基于Mozilla Thunderbird的扩展开发(七)---工欲善其事,必先利其器  
<target name="createxpi" depends="createjar">
基于Mozilla Thunderbird的扩展开发(七)---工欲善其事,必先利其器    
<zip destfile="helloworld.xpi">
基于Mozilla Thunderbird的扩展开发(七)---工欲善其事,必先利其器      
<zipfileset dir="." includes="helloworld.jar" prefix="chrome" />
基于Mozilla Thunderbird的扩展开发(七)---工欲善其事,必先利其器      
<zipfileset dir="." includes="chrome.manifest"/>
基于Mozilla Thunderbird的扩展开发(七)---工欲善其事,必先利其器      
<zipfileset dir="." includes="install.rdf" />
基于Mozilla Thunderbird的扩展开发(七)---工欲善其事,必先利其器    
</zip>
基于Mozilla Thunderbird的扩展开发(七)---工欲善其事,必先利其器  
</target>
基于Mozilla Thunderbird的扩展开发(七)---工欲善其事,必先利其器
</project>
基于Mozilla Thunderbird的扩展开发(七)---工欲善其事,必先利其器

如果你的项目结构比这个要复杂的话,请根据自己的需求更改此文件再使用Ant编译就可以了。这种方法也是我目前使用最多的方法了,因为感觉控制起来比较灵活。

      如果你喜欢集成化的开发工具,想让它为你做更多的事情的话,这里推荐一个工具:NetBean+foxbeans+foxfiles,后面两个插件是用于开发Mozilla平台插件的,下载地址为:

Foxbeans: http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=4209

Foxfiles: http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=4649

官方的入门文档:

http://wiki.netbeans.org/MozillaAddonDevelopment

不过不推荐用这个插件,试用了一下,并不是很好用。

     

      再来谈下另一个问题,在做界面时,如何快速地获知目标程序中想overlay掉的控件的id以及它的属性呢?这在做插件开发时是一个比较重要的方面,因为你的插件的界面就是附着在目标程序(firefoxthunderbirdsunbird)上的。那么官方推荐的工具就够用了,这个插件就是DOM Inspector它可以用来定位你所需要的控件。

      Venkman是官方推荐的调试工具,但个人感觉还是不大好用。

另外几个调试的技巧是:1)可以试用”dump语句来显示调试信息,不过这需要进行一些配置工作。2)在代码中使用nsIConsoleService 将日志信息输出到JavaScript控制台中。

3)自己编译一个debug版本的firefoxthunderbird,并且在其源代码或你的C++ XPCOM组件中设置断点,进一步的信息可以参考Mozilla开发中心的文档。

      除此以外,我们也可以自己开发一个日志工具类来记录感兴趣的信息,下面是我常用的一个日志组件类:

基于Mozilla Thunderbird的扩展开发(七)---工欲善其事,必先利其器const CI = Components.interfaces, CC = Components.classes, CR = Components.results;
基于Mozilla Thunderbird的扩展开发(七)---工欲善其事,必先利其器tBirdBiffUtility.classID 
= Components.ID("{e07f8540-831f-11db-9fe1-0800200c9a66}");
基于Mozilla Thunderbird的扩展开发(七)---工欲善其事,必先利其器tBirdBiffUtility.contractID 
= "@phinecos.cnblogs.com/HelloWorld/utility;1";
基于Mozilla Thunderbird的扩展开发(七)---工欲善其事,必先利其器tBirdBiffUtility.classDescription 
= "Utility Service";
基于Mozilla Thunderbird的扩展开发(七)---工欲善其事,必先利其器
基于Mozilla Thunderbird的扩展开发(七)---工欲善其事,必先利其器
//日志组件
基于Mozilla Thunderbird的扩展开发(七)---工欲善其事,必先利其器
function tBirdBiffUtility()

相关文章:

猜你喜欢
  • 2021-12-08
  • 2021-04-21
  • 2021-09-24
  • 2022-01-20
  • 2021-11-27
相关资源
相似解决方案