mozilla

Einrichten einer Entwicklungsumgebung für Erweiterungen

Dieser Artikel soll Anregungen geben wie Sie ihre Mozilla-Anwendung zur Entwicklung von Erweiterungen einrichten können. Dieser Artikel bezieht sich sowohl auf Firefox als auch auf Thunderbird und SeaMonkey in der Version 2.0 und höher.

Überblick

Entwicklerprofil

Um die Geschwindigkeitseinbußen durch Einstellungen und Erweiterungen zu Entwicklung sowie den Verlust persönlicher Daten zu vermeiden, sollten Sie ein gesondertes Entwicklerprofil einrichten.

Sie können zwei Firefox-Instanzen mit unterschiedlichen Profilen nutzen, wenn Sie den Browser mit dem -no-remote Parameter starten. Beispielsweise können Sie mit dem folgenden Befehl Ihr Entwicklerprofil, von dem wir annehmen, dass es "dev" heißt, unabhängig davon starten, ob bereits eine "normale" Instanz von Firefox läuft oder nicht:

Unter Ubuntu (und vielen anderen Linux Distributionen):

/usr/bin/firefox -no-remote -P dev

Unter einigen anderen Distributionen von Linux/Unix:

/usr/local/bin/firefox -no-remote -P dev

Unter Mac:

/Applications/Firefox.app/Contents/MacOS/firefox-bin -no-remote -P dev &

Unter Windows:

Start -> Ausführen "%ProgramFiles%\Mozilla Firefox\firefox.exe" -no-remote -P dev

Unter Windows 64 bit:

Start -> Run "%ProgramFiles(x86)%\Mozilla Firefox\firefox.exe" -no-remote -P dev

Um Thunderbird oder SeaMonkey zu starten, muss "Firefox" in den Beispielen entsprechend ersetzt werden.

Wenn das Profil noch nicht besteht wird es automatisch erstellt. Um Firefox wie gewöhnlich zu starten, kann einfach "firefox" oder "firefox -P default" verwendet werden.

Außerdem können gleichzeitig verschiedene Versionen des Firefox installiert werden, um die Kompatibilität der Erweiterung zu testen. Es können sogar stabile Versionen sowie die aktuelle Entwicklerversion auf einem System installiert werden.

Siehe auch: Installing Firefox 3 or Minefield while keeping Firefox 2 (englisch)

Um mehrere Restarts zu vereinfachen, kann ein Profil für den regulären Gebrauch und ein zweites Für das Testen von Erweiterungen verwendet werden. Durch das "no-remote" Kommando können beide Profile gleichzeitig ausgeführt werden. Eine Beschreibung findet sich unter http://kb.mozillazine.org/Command_line_arguments. Diese beiden Verknüpfungen für Windows sind dazu sehr hilfreich:

...firefox.exe -no-remote -p "profile1"

...firefox.exe -no-remote -p "profile2"

Diese Zeilen sind Windows-spezifisch. Wenn Sie die gleichen Anweisungen für Linux / Mac OS / etc haben, fügen Sie diese doch hier hinzu.

Ersetzen Sie "..." mit einem regulären Pfad. Erstellen Sie beide Verknüpfungen und schon ist es sehr einfach beide Profile gleichzeitig zu verwenden.

Entwicklungseinstellungen

Diese Einstellungen erleichtern das Debuggen auf Kosten sinkender Geschwindigkeit.

Unter Editing Configuration Files und About:config Einstellungen finden sich weitere Informationen wie Einstellungen vorgenommen werden können. Beachten Sie, dass nicht alle relevanten Einstellungen defaultmäßig unter about:config angezeigt werden. Daher müssen für diese Einstellungen neue Einträge (boolean) angelegt werden.

Diese Änderungen sollten nur in einem gesondert angelegtem Entwicklerprofil gemacht werden.

  • javascript.options.showInConsole = true. Logt Fehler in Chrome-Dateien in die Fehlerkonsole
  • nglayout.debug.disable_xul_cache = true. Deaktiviert den XUL Cache damit Änderungen an Fenstern und Dialogen ohne Neustart übernommen werden. Dazu müssen zur Entwicklung Verzeichnisse statt JAR-Archive benutzt werden. Änderungen an XUL-Overlays werden dennoch nur nach dem erneuten Laden des überlagerten Dokumentes übernommen.
  • browser.dom.window.dump.enabled = true. Erlaubt die Nutzung von dump(), um direkt auf die Standardkonsole zu schreiben. Sie können innerhalb privilegierter Skripte auch nsIConsoleService benutzen.
  • javascript.options.strict = true. Aktiviert JavaScript strict Warnungen in der Fehlerkonsole. Viele haben diese Einstellungen während der Entwicklung leider deaktiviert. Daher werden Sie, zusätzlich zu den Warnungen in Bezug auf den Code, viele Warnungen zu Problemen im Code anderer Erweiterungen bekommen. Diese können mit Console2 gefiltert werden.
  • extensions.logging.enabled = true. Diese Einstellung aktiviert detailliertere Meldungen der Fehlerkonsole über Installations- und Updateprobleme.
  • nglayout.debug.disable_xul_fastload = true. Für Gecko 2.0+ (Firefox 4.0+). Siehe diesen Bug für weitere Informationen.
  • Eventuell wollen Sie auch dom.report_all_js_exceptions = true setzen. Siehe Exception logging in JavaScript für weitere Details.

Hinweis zu Gecko 2.0
(Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)

Die Fehlerkonsole ist ab Firefox 4 standardmäßig deaktiviert. Sie können sie wieder aktivieren, indem Sie devtools.errorconsole.enabled auf true setzen und den Browser neu starten. Damit wird außerdem standardmäßig javascript.options.showInConsole auf true gesetzt.

Erweiterungen für Entwickler

Diese Erweiterungen könnten bei der Entwicklung helfen:

Erweiterung in benutzerdefiniertem Verzeichnis

Anstatt nach jeder Änderung die Erweiterung neu zu installieren und als Schutz vor versehentlichem Löschen, wenn die Anwendung deinstalliert wird, können Sie ein Verzeichnis außerhalb des Profils an einem beliebigen Ort einrichten.

  1. Suchen Sie in der in der Erweiterung enthaltenen install.rdf die ID der Erweiterung
  2. Erstellen Sie eine leere Datei in dem das_profil_verzeichnis/extensions/ mit der ID als Dateiname. (z.B. 'das_profil_verzeichnis/extensions/i...r@mozilla.org') Wo finde ich meinen Profilordner?
  3. In dieser Datei wird dann einfach der vollständige Pfad zur install.rdf gespeichert.

    z.B. Linux:

    /full/path/to/yourExtension
    

    Oder Windows:

    C:\sam\workspace\toolbar\helloWorldtoolbar\
    
  4. Platzieren Sie die Datei in den Erweiterungsordner und starten Sie die Anwendung

Verzeichnisse statt JAR-Archiven benutzen

Unabhängig davon, ob Sie Erweiterungsdateien in ein JAR-Archiv oder Verzeichnisse packen, ist es einfacher in einem Verzeichnis zu entwickeln. Auch wenn Sie sich für ein JAR-Archiv für die Veröffentlichung entscheiden, können Sie trotzdem in einem Verzeichnis entwickeln, indem Sie Ihr chrome.manifest ändern.

JAR-Archiv:

content	myExtension	jar:chrome/myExtension.jar!/content/

Verzeichnis:

content	myExtension	chrome/content/

Schlagwörter des Dokuments und Mitwirkende

Schlagwörter: 
Mitwirkende an dieser Seite: fscholz, Jules Papillon, Luxo, Wosjack
Zuletzt aktualisiert von: fscholz,