2008年6月20日

Mac 下開發 Firefox Addon 筆記



主要參考這篇來進行: Building an Extension-MDC


一、Firefox/Thunderbird Extension Wizard: 先產生一份 extension framework (helloworld.zip)。 解開之後,build.sh 要改下面這些東西


1.
mkdir --parents --verbose $TMP_DIR/chrome 


改成
 
mkdir -p -v $TMP_DIR/chrome


2.
 
cp --verbose --parents $FILES $TMP_DIR


改成
 
cp -v -p $FILES $TMP_DIR


3.
 
cp --verbose $ROOT_FILE $TMP_DIR


改成
 
cp -v $ROOT_FILE $TMP_DIR


4. 也可能會有下述的錯誤訊息
 
sed: 1: "s/^(content\s+\S*\s+)(\ ...": \1 not defined in the RE
sed: 1: "s/^(skin|locale)(\s+\S* ...": \1 not defined in the RE


這是 sed 處理內,\\1 似乎 backslash 處理不好,
 
sed -i -r s/^\(content\\s+\\S*\\s+\)\(\\S*\\/\)$/\\1jar:chrome\\/$APP_NAME\\.jar!\\/\\2/ chrome.manifest
sed -i -r s/^\(skin\|locale\)\(\\s+\\S*\\s+\\S*\\s+\)\(.*\\/\)$/\\1\\2jar:chrome\\/$APP_NAME\\.jar!\\/\\3/ chrome.manifest


一直調不好,只好這兩行改用 perl 處理 !!充血!!
 
perl -i -pe 's/^(content\s+\S*\s+)(\S*\/)(\s+\S*\s*)$/\1jar:chrome\/'$APP_NAME'\.jar!\/\2\3/' chrome.manifest
perl -i -pe 's/^(skin|locale)(\s+\S*\s+\S*\s+)(.*\/)$/\1\2jar:chrome\/'$APP_NAME'\.jar!\/\3/' chrome.manifest


 


 


二、在測試 (Test) 的情形下,不用每次都重新建立 helloworld.xpi,安裝再重開 Firefox.

  1. 在 ~/Library/Apllication Suppor/Firefox/Profiles/ 目錄,會有類似 <xxxyxxy>.default 的目錄,其中 <xxxyxxy> 名稱每次新增都會不一樣。

  2. 在該目錄下的 extensions 目錄新增一個檔案,該檔名為 extension 的 ID,可在 install.rdf 內的 <em:id> 內找到,比如 helloworld@derjohng.sun

  3. 比如
     ~/Library/Apllication Suppor/Firefox/Profiles/xxxyxxy.default/extensions/helloworld@derjohng.sun



  4. 該檔案內填入,你在開發的 extension 的目錄位置。

  5. 這樣改完程式,重開 Firefox 即可。

  6. 原本 Extension Developer Addon 有「Reload Chrome」可以不用重開 Firefox,但我每試必當掉,所以,只好改用另一個 QuickRestart Addon 來重開了。



 


三、在 GreaseMonkey 開發的 Script 可以藉由 User Script Compiler 轉換成 Firefox Addon。


 


四、在 Firefox2 下寫好的 Addon,轉到 Firefox3 下執行,Error Console 可能會有下列的訊息,
 
Security Error: Content at ********** may not load or link to chrome://helloworld/skin/hellow.png


只要在 chrome.mainifest 原來的
 
content helloworld content/


加上 contentaccessible=yes 即可
 
content helloworld content/ contentaccessible=yes


 


五、這裡有關於開發 Addon 的簡體中文版


 


六、XULRunner 是個蠻好玩的東西


可以用做 Firefox Addon 的相同架構,用 XUL 和 Javascript 就可以做成應用程式,比如 Chatzilla on XULRunner。就是和 Adobe AIR 相同概念的東西。 






Orignal From: Mac 下開發 Firefox Addon 筆記