2007年9月17日 星期一

GRE 開發備註一

整整花了一個星期閉關搞 GRE . 這裡的 GRE 不是指英文的 GRE普通測驗. 而是 Gecko Runtime Environment.

源起:
由於手上一個 CASE 的需求是需要為公司的硬體週邊做一個檢測程式, 而這些週邊含 Serial Port(RS232) / Parallel Port(IEEE 1284) / USB 裝置 / 以及部份數位 TTL信號.
而這些裝置希要提供 Win32 / Linux(趨勢) 上測試通過.
且這支測試程式還有另一個任務, 就是 Open Source C++ 部份的 API 給買裝置回去整合的廠商參考實作.
本來想用 Java + JNI 把它解決掉, 因為要 Release 的廠商多, 每一家要有自己的版本及 Logo, 所以要一家一家改 JForm 有點麻煩, 本來試試 JavaFX 來動態搞, 不熟再加上第二個原因.
廠商的工程師都是使用 C++ , 用 Java+JNI 等於我還是要再寫一份 C++ 的 Sample 給廠商.

最主要的是.....想玩玩 GRE , 於是... 整個架構如下..

XUL/XHTML -> Javascript -> XPConnect -> XPCOM(C++ or Javascript)

##CONTINUE##
所以, 除了最底層的裝置操作用 C++ 實作, 且這部份的 Code 剛好就是要給廠商的 Sample Code.
其它的 GUI 部份及全部的程式流程, 只要在 XUL/XHTML 中寫寫 Javascript , 而 jQuery 部份修改也能操作 XUL ...
所以每個客戶的程式界面要多炫就能有多炫,還可以給個 Flash 單介面和動畫 Splash 呢。

卻被 Win32 平台搞死:
在 Linux 下開發很順利, 整個實作過程和原始概念差不多, 也開發的很愉快..
沒想到原本以為最容易的 Win32 平台, 由於開始想用 GRE 前沒做太多功課, 卻是惡夢的開始.

阿土伯是打算使用 VC++ 2005 express edition 來 make , 怎麼搞就是一堆 error.
後來看到 Windows Build Prerequisites 差點昏倒, 原來 Gecko 1.8 在 VC++ 2005 express 是 NO .. 問題剩下最後一哩路了, 總不改用 "原版A拷 VC6 / VC7.1" 呀~~
查了很多, 日本人寫的這篇還算詳細, 雖然整個 mozilla 還是無法 build 出來, 但 extensions 及 sdk 都還沒問題. 給使用 VC++ 2005 express 的大家參考.


建議參考資料:
XULRunner - 一個可以單獨運作的 gecko 開發包, 如果沒有一定要 embed gecko , 由這個開始會很舒服.
XPCOMViewer - 一個用來 Browse XPCOM 的工具, 您可以看到 Gecko 中一大堆實用的 XPCOM Interface.
XPCOM Strings / XPCOM Array / XPCOM Hashtable - 這也是讓阿土伯最無力的文件之一, 資料有點老舊, 如果你是直接使用 Gecko-SDK 而不是由 seamonkey-src 來 build 你的專案, 你會發現文件中說的 class 在 SDK 中都不存在, 因為 frozen / unfrozen API 的關係. 建議直接花時間看看 SDK 中的 .h 看看有什麼 Class 比較快.
這部份等結案後再來整理...

總之... 忙到爆... 但希望這個工做完.. 以後就能涼到爆....
因為, 不管什麼程式, 都只剩下 XUL/XHTML + Javascript 了.. 這部份要怎麼改都行.
張貼留言