mozilla
Your Search Results

    JAR Packaging

    警告: この記事の内容は古くなっている可能性があります。 このドキュメントの最終更新は 2005 年です。

    ビルドの過程において、さまざまな chrome ファイルが dist/bin/chrome に集められます。これらのファイルはアプリケーションのユーザインターフェイスを定義するファイルであり、XULJavaScript、DTD (ローカライズ のため)、CSS、XBL、画像といったファイルなどからなります。ビルドシステムは jar.mn というマニフェストファイルを通して、chrome ファイルをビルドする過程を自動化します。

    Chrome パッケージのフォーマット

    Chrome ファイルはさまざまなフォーマットをとることができます。それぞれ長所と短所があります:

    フォーマット 長所 短所
    JAR パッケージ (デフォルト) 最も能率的です。Chrome ファイルは少数の JAR アーカイブ (ZIP ファイルとしても知られている) にまとめられます。これはより簡単にキャッシュでき、システム上でファイルハンドルを開く数を減らせます。 結果としてできたファイルからパッチを作るのは非常に困難です。
    フラットファイル chrome フラット chrome は編集、差分の抽出、パッチの適用がより簡単にできるため、テスト目的や実験的用途には有用です。 JAR パッケージほど能率的ではありません。
    シンボリックリンクされたフラット chrome フラット chrome に似ており、シンボリックリンクされた chrome は編集や mozilla ソースツリーのパッチの適用が容易です。またディスクスペースを抑えることもできます。 本当のシンボリックリンクがサポートされたプラットフォーム (windows は該当しない) でのみ可能。 JAR パッケージほど能率的ではありません。

    Mozilla をビルドする際、Build Configurator を使うか、--enable-chrome-format=(jar|flat|symlink) というフラグを手動で設定することで chrome パッケージのフォーマットを明示できます。

    jar.mn のフォーマット

    ビルドシステムは Makefile と同じディレクトリから jar.mn というファイルを自動的に探し、chrome を作るためにこれらのファイルをパースします。

     例: mozilla/browser/base/jar.mn (短縮版)
     
     browser.jar:
             content/browser/contents.rdf                  (content/contents.rdf)
     # ソースファイル content/contents.rdf は、jar ファイル browser.jar に
     # ontent/browser/contents.rdf というパスでコピーされる
             content/browser/about.png                     (content/about.png)
     *       content/browser/aboutDialog.xul               (content/aboutDialog.xul)
     # ソースファイル content/aboutDialog.xul は jar ファイルに格納される前に
     # XUL プリプロセッサに通される
     
     classic.jar:
             skin/classic/browser/aboutDialog.css          (skin/aboutDialog.css)
             skin/classic/browser/Bookmarks-folder.png     (skin/Bookmarks-folder.png)
     
     en-US.jar:
             locale/en-US/browser/contents.rdf             (locale/contents.rdf)
     *       locale/en-US/browser/browser.dtd              (locale/browser.dtd)
    

    JAR ファイルの構造

    Jar ファイルの内部構造は、簡単にデバッグができるように、整合性がある構造になっています。したがって、jar ファイルの中身を調べれば、(結果的に) jar ファイルにどんなものが含まれているかを調べることができ、別の製品のためにパッケージを組み替えることが容易にできます。例えば、ある製品は (chatzilla のように) content、skin、locale を一つのパッケージに chrome としてまとめたいかもしれませんし、別の製品では、拡張性のために content と skin は別の jar ファイルにしておきたいかもしれません。

    内部的に、それぞれの jar ファイルは次の 3 つのうちの 1 つの形式をとります:

    • content/package-name/<path>
    • skin/skin-name/package-name/<path>
    • locale/locale-name/package-name/<path>

    これらはそれぞれ 3 つの形式の chrome URL に対応します:

    contents.rdf と Chrome Registry

    XUL ファイルを JAR の中に入れれただけでは、そのファイルに chrome:// URI からアクセスできることにはなりません。そのファイルについて chrome registry に知らせる必要があります。これには RDF と contents.rdf という特別なファイルを使います。不幸にも contents.rdf のための RDF スキーマは実はドキュメント化されていません。それを学ぶ一番の方法は実際の例をコピーすることです:

     例: mozilla/extensions/venkman/resources/content/contents.rdf
     
     <RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
              xmlns:chrome="http://www.mozilla.org/rdf/chrome#">
     
       <!-- この jar によって与えられる全パッケージのリスト -->
       <RDF:Seq about="urn:mozilla:package:root">
         <RDF:li resource="urn:mozilla:package:venkman"/>
       </RDF:Seq>
     
       <!-- パッケージ情報 -->
       <RDF:Description about="urn:mozilla:package:venkman"
             chrome:displayName="JavaScript Debugger"
             chrome:author="mozilla.org"
             chrome:localeVersion="@MOZILLA_VERSION@"
             chrome:name="venkman">
       </RDF:Description>
     
       <!-- オーバレイ情報 -->
       <RDF:Seq about="urn:mozilla:overlays">
         <RDF:li resource="chrome://communicator/content/tasksOverlay.xul"/>
       </RDF:Seq>
     
       <RDF:Seq about="chrome://communicator/content/tasksOverlay.xul">
         <RDF:li>chrome://venkman/content/venkman-overlay.xul</RDF:li>
       </RDF:Seq>
     </RDF:RDF>
    

    Chrome ビルドシステムが contents.rdf ファイルを見つけるたびに、グローバルファイルである installed-chrome.txt にそのパッケージを登録します。

     例: Flat chrome パッケージを選んだときの installed-chrome.txt
     
     locale,install,url,resource:/chrome/en-US/locale/en-US/necko/
     content,install,url,resource:/chrome/comm/content/editor/
     locale,install,url,resource:/chrome/en-US/locale/en-US/editor/
     content,install,url,resource:/chrome/comm/content/navigator/
     locale,install,url,resource:/chrome/en-US/locale/en-US/navigator/
     content,install,url,resource:/chrome/toolkit/content/global/
     locale,install,url,resource:/chrome/en-US/locale/en-US/global/
     content,install,url,resource:/chrome/comm/content/communicator/
     locale,install,url,resource:/chrome/en-US/locale/en-US/communicator/
     skin,install,url,resource:/chrome/classic/skin/classic/communicator/
     skin,install,url,resource:/chrome/classic/skin/classic/editor/
     skin,install,url,resource:/chrome/classic/skin/classic/global/
     skin,install,url,resource:/chrome/classic/skin/classic/messenger/
     skin,install,url,resource:/chrome/classic/skin/classic/navigator/
     skin,install,url,resource:/chrome/blue/skin/blue/communicator/
     skin,install,url,resource:/chrome/blue/skin/blue/editor/
     skin,install,url,resource:/chrome/blue/skin/blue/global/
     skin,install,url,resource:/chrome/blue/skin/blue/messenger/
     skin,install,url,resource:/chrome/blue/skin/blue/navigator/
     skin,install,url,resource:/chrome/modern/skin/modern/communicator/
     skin,install,url,resource:/chrome/modern/skin/modern/editor/
     skin,install,url,resource:/chrome/modern/skin/modern/global/
     skin,install,url,resource:/chrome/modern/skin/modern/messenger/
     skin,install,url,resource:/chrome/modern/skin/modern/navigator/
     skin,install,select,classic/1.0 
     locale,install,select,en-US 
     content,install,url,resource:/chrome/messenger/content/messenger/
     locale,install,url,resource:/chrome/en-US/locale/en-US/messenger/
    

    原文書の情報

    • 著者: Warren Harris
    • 貢献者: Benjamin Smedberg
    • 最終更新日: Feb 7, 2005
    • 著作権: Portions of this content are © 1998–2007 by individual mozilla.org contributors; content available under a Creative Commons license | 詳細

    ドキュメントのタグと貢献者

    Contributors to this page: Kohei, Mgjbot
    最終更新者: Kohei,