firebreath 在谷歌和火狐浏览器下的调试 以及打包
在寻找插件开发资料的过程中找到了一个开发浏览器插件的开源项目——firebreath
firebreath的安装以及测试我就不再叙述了,可以参考大神的文章 。 http://www.blogjava.net/xiaomage234/archive/2012/08/28/386428.html
下面我主要介绍一下调试和打包。
火狐下的调试:
这也是楼主主推荐的调试方法。firebreath配合火狐的调试简直可以说是浑然天成。如果让火狐可以调试firebreath的代码的话,需要对火狐浏览器进行如下的设置。
- 打开firefox浏览器,在地址栏输入 “about:config”。在搜索框中输入“plugins”,选择dom.ipc.plugins.enabled 设为false; (双击即可切换)
-
设置环境变量MOZ_CRASHREPORTER_DISABLE = 1 (如果没有的话,新增一个环境变量即可)
- 在代码需要调试的地方打上断点。点击 VS菜单栏的调试=>附加到进程。选择需要调试的页面。注意:进程一定是 firefox.exe,标题为测试页面的title。选择完即可进入调试状态,点击页面js的方法,触发firebreath中的方法,就会停止在断点处。结果如下图所示:
谷歌浏览器下的调试:
大多数情况下使用火狐浏览器就可以完成工作,但是有时候不知道什么情况,同样的代码在火狐下运行的很正常,但是一到谷歌下就出错。如寻找插件的位置。火狐下插件的dll大小写和生成的大小写是一致的,而谷歌却画蛇添足版的全部转化成了小写,如下图所示,同一个插件,打印出来的插件路径却不一样,此时在程序中对这段字符进行操作时就会出现错误。
考虑到国内大多数用户被360所毒害,而360使用的真是谷歌的内核,所以不得不考虑在谷歌下的各种问题。下面介绍在谷歌浏览器下调试的步奏。
- 先把打开这的谷歌浏览器全部关掉,然后用cmd进入谷歌浏览器的安装目录,如果机器上安装了git的话,可以直接手动进入谷歌浏览器的安装目录。右键 Gir Bash Here,即可快速进入当前目录的cmd模式。然后在cmd中输入 chrome.exe -plugin-startup-dialog 按下回车,chrome就会自动,此刻chrome就会进入 插件启动的状态,如下所示
- 接在在用命令行打开的chrome中,输入测试地址。就会弹出pid,如下图:
记住此pid。
- 接下来就和火狐的调试一样了,在vs中 调试=》附加到进程。选择 pid为在谷歌浏览器弹出的 pid的值的那个进程。确定后即可调试谷歌浏览器。
打包:firebreath的打包使用的是 Vix打包工具,只要到CodePlex上下载Vix开发包。然后再一次进入 firebreath根目录。重新运行一下 Prep2013.cmd firebreath会自动检测系统是否安装 Vix,如果暗转的话,就会在Project文件夹下对应的 插件目录下 生成 安装 工程。只要编译此安装工程即可 生成安装包。安装工程如下图所示:
所有的配置安装过程都在 Sources下的IDCardReaderInstaller.wxs文件,如果我们需要配置额外的 dll在安装包中的话,需要手动添加此dll进去,比如我需要把身份证读卡器的公用dll包含进去。那么就需要进行如下的配置
<Directory Id="PluginNameDir" Name="${FBSTRING_PluginName}"> <!--<Component Id="PluginNameDirComp" Guid="*"> <RemoveFolder Id="RemovePluginNameDir" On="uninstall" /> <RegistryValue Root="HKCU" Key="SOFTWARE\${COMPANY_NAME}\${PLUGIN_NAME}" Name="Uninstall" Type="string" Value="${FBSTRING_PLUGIN_VERSION}" KeyPath="yes" /> </Component> <Directory Id="INSTALLDIR" Name="${FBSTRING_PLUGIN_VERSION}">--> <Component Id="InstallDirComp" Guid="*"> <RemoveFolder Id="RemoveInstallDir" On="uninstall" /> <RegistryValue Root="HKCU" Key="SOFTWARE\${COMPANY_NAME}\${PLUGIN_NAME}\${FBSTRING_PLUGIN_VERSION}" Name="Uninstall" Type="string" Value="${FBSTRING_PLUGIN_VERSION}" KeyPath="yes" /> </Component> <Component Id="UniqueComponentId" Guid="07538E54-1C3F-4E8F-AC7E-270660B1E4D1"> <File Id="uniqueFileId" Source="F:\FireBreath-IdCard\build\bin\IDCardReader\Release\sdtapi.dll" /> <File Id="uniqueFileId" Source="F:\FireBreath-IdCard\build\bin\IDCardReader\Release\mwrf32.dll" /> </Component> <!--</Directory>--> </Directory>
这样就会把sdtapi.dll和mwrf32.dll 包含到安装目录下。其它的节点的意思,可以到vix的官网上去查看各自表示的意义。