「拡張機能の基本」の編集履歴(バックアップ)一覧に戻る

拡張機能の基本 - (2014/01/25 (土) 17:30:48) のソース

#contents()

-[[Building an Extension | MDN>https://developer.mozilla.org/ja/docs/Building_an_Extension]]
-[[Performance best practices in extensions - Extensions | MDN>https://developer.mozilla.org/en-US/docs/Extensions/Performance_best_practices_in_extensions]]

*基本的なファイル構成
 *.xpi
  ├ install.rdf
  ├ chrome.manifest
  ├ content
  │   └*.xul / *.js
  ├ locale                            ローカライズが必要な場合
  │   ├ en-US
  │   │  └ *.dtd / *.properties
  │   └ ja
  │       └ *.dtd / *.properties
  ├ skin                              スキンが必要な場合
  │   └*.css / *.png
  ├ components                        独自XPCOMを作る場合
  │   └ *.*
  ├ modules                           独自jsmを作る場合
  │   └ *.jsm / *.js
  ├ defaults                          設定を保存する場合は大抵用意する。固定
  │   └preferences
  │        └*.js
  └ chrome                            windowに独自アイコンを使う場合。固定
       └ icons
           └ default
               └ *.ico / *.xpm
-今主流の(?)フォルダ構成。
-上で「固定」と書かれてるもの以外は結局はchrome.manifestでの指定次第なので、自分の好きなようにしていい。
-以前(xpiを解凍してインストールしてた時)は content, locale, skin を jar に固めてchromeに置いてたけど、今は必要ない。
-ただし今でもxpiを解凍するタイプの拡張は jar で固めるべき。
-独自アイコンのやつはxpiを解凍しないと機能しない?ので今ではほとんど見かけない。

*xpi や jar 圧縮
-zip です。
-xpi は level 1 の zip 圧縮で。
-jar は 無圧縮 zip で。

-テスト環境では圧縮する必要はない。[[Building an Extension>https://developer.mozilla.org/ja/docs/Building_an_Extension#.E3.83.86.E3.82.B9.E3.83.88]] の中頃(「テスト」の項目)に書かれている通り、フォルダパスを書いたテキストファイル(注:ファイル名をIDにして、拡張子は無し)をプロファイルの extentions フォルダに置いておけば Firefox は読み込んでくれる。
-extentions フォルダに直接作ってもいーけどね。

*install.rdf
#highlight(xml){
<?xml version="1.0"?>

<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     xmlns:em="http://www.mozilla.org/2004/em-rdf#">

  <Description about="urn:mozilla:install-manifest">
    <em:id>SampleExtention@yourdomain.co.jp</em:id>
    <em:name>Sample Extention</em:name>
    <em:version>1.0</em:version>
    <em:type>2</em:type>
    <em:creator>Your Name</em:creator>
    <em:description>A test extension</em:description>
    <em:homepageURL>http://www.yourdomain.co.jp/</em:homepageURL>
    <em:optionsURL>chrome://sample/content/options.xul</em:optionsURL>

    <em:targetApplication>
      <Description><!-- Firefox -->
        <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
        <em:minVersion>2.0</em:minVersion>
        <em:maxVersion>3.*</em:maxVersion>
      </Description>
    </em:targetApplication>
  </Description>
</RDF>}
-name や description などはローカライズ可能。
-[[Install Manifests | MDN>https://developer.mozilla.org/ja/docs/Install_Manifests]]

*chrome.manifest
 content sample content/
 #content sample jar:chrome/sample.jar!/content/
 
 resource sample-modules modules/ 
 
 overlay chrome://browser/content/browser.xul chrome://sample/content/overlay.xul
 
 locale sample en-US locale/en-US/
 locale sample ja    locale/ja/
 
 skin sample classic/1.0 skin/
-先頭に#でコメント行
-sampleがパッケージ名。他の拡張とかぶるとヤバイので注意。