Aperture 3: Plug-Ins entwickeln

Als ich heute das Netz nach das Quellen für die Entwicklung eines Aperture 3-PlugIns durchsucht habe, war ich etwas erschrocken wie wenig Links, Tutorials und Quellen es dafür gibt. Das alles möchte ich mit diesem Tutorial ändern und so vielen wie möglich die Entwicklung eines Plug-Ins für Aperture 3 von Apple näher zu bringen. Dazu sei zu sagen, dass ich vorher noch nie etwas anständiges mit XCode entwickelt habe, noch nie ein PlugIn für Aperture geschrieben habe oder mich mit der Materie auskenne. Das Ganze hier ist mehr wie eine Art Logbuch zu sehen, in dem ich die einzelnen Schritte erkläre, die mich zum Ziel geführt haben. Ich werde aber dennoch auf die Wege eingehen, die in einer Sackgasse geendet sind und die mich nicht weiter gebracht haben – einfach aus dem Grund, Euch das Suchen zu ersparen!

Zu Anfang möchte ich kurz meine Entwicklungsumgebung vorstellen:

  • Mac OS X 10.8.2 alias Mountain Lion
  • XCode 4.6 (4H127)
  • Aperture 3.4.3

Man kann scheinbar nur zwei verschiedene Typen von PlugIns schreiben: Edit-PlugIns und Export-PlugIns. Das würde meinen Plan total verwerfen, ein PlugIn zu schreiben, welches verschiedene Statistiken zu genutzten Objektiven und Kameraeinstellungen erstellt. Da man aber laut Dokumentation die Möglichkeit hat auf die EXIF-Informationen zuzugreifen, sollte es auch möglich sein ein Export-Plugin für diese Funktion bereitzustellen. Dafür müssten dann eben alle Fotos „exportiert“ werden, welche in die Statistik einfließen sollen. Das wäre mir persönlich fast noch lieber, da ich mir so den Umstand spare einen Datumsfilter etc. zu entwerfen.

Entwicklungsumgebung

Gestart wird auf der Entwicklungsseite von Apple. Auf der rechten Seite findet Ihr einen Link zu den Downloads. Nun müsst Ihr euch mit eurer Apple-ID anmelden. Ich bin mir nicht sicher ob man für den Schritt schon für das Developer-Programm angemeldet sein muss. Ich habe vor einiger Zeit bereits angemeldet, bin aber in keinem Programm eingeschrieben und zahle dafür auch nichts. Dennoch konnte ich den Download des Aperture SDKs (2.1) durchführen.

In dem Download-Paket des SDKs finden sich auch verschiedene Dokumente. Lustig ist, dass ich im Netz eine neuere Version des Dokumentes gefunden habe, als die, die dem Download beiliegt.

Nach der Installation des SDKs findet man ein neues Verzeichnis mit Beispiel-PlugIns auf Eurer Festplatte:

Ich für meinen Teil fand die Stelle sehr unpassend, und habe das Verzeichnis kurzerhand in eine andere Entwicklungsstruktur geschoben. Ich glaube außerdem, dass das Developer-Verzeichnis noch aus früheren Mac OS X-Versionen stammt und nicht mehr state of the art ist.

Wo werden PlugIns abgelegt? Dafür gibt es scheinbar zwei Möglichkeiten:

  • Ein PlugIn wird nur für einen Benutzer installiert -> /Users/<Benutzername>/Library/Application Support/Aperture/
  • Ein PlugIn wird für alle Benutzer des Rechners installiert  -> /Library/Application Support/Aperture/Plug-Ins/

Probleme beheben

Da sind wir nun – geöffnet habe ich ein Beispiel-Projekt (den FTP-Export). Bauen lässt sich das ganze noch nicht – es ist die falsche Plattform ausgewählt und irgendwie mag auch sonst nichts so richtig laufen. Der Compiler beschwert  sich, dass er folgende Header-Datei nicht finden kann:

Nun gut, also etwas Google bemüht. Schnell finde ich raus, dass ein gewisses „FxPluginSDK“ fehlt. Die Suche danach im Web scheint wenig erfolgsversprechend. Ich finde weder auf den Apple-Entwickler-Seiten einen Download, noch wo anders im Web. Doch warum wird das Teil immer wieder angesprochen? Es muss also auf jeden Fall damit zusammenhängen.

Nach einiger Suche, bin ich auf folgende Artikel gestoßen:

Die Suche auf der Support-Seite von Apple nach „Plugin Manager“ liefert sogar einen Treffer (Version 1.7.3 – benötigt Mac OS X 10.4.9 oder später). Das klingt sehr veraltet. Außerdem finde ich bereits ein PluginManager-Verzeichnis auf meiner Festplatte:

Sorge mach mir dabei die Tatsache, dass ich mittlerweile schon etliche Male gelesen habe, dass nach der Installation Aperture3 nicht mehr startet (bzw. nicht mehr im 64Bit-Modus). Ich bin mir also unsicher ob ich das riskieren möchte. Weiterhin habe ich schon öfter gelesen, dass es zu Problemen führen kann wenn Aperture und Final Cut gleichzeitig installiert sind – auch das Problem scheint auf den PluginManager zu deuten.

Also habe ich das Paket geladen und per Rechtsklick auf die .pkg-Datei in das Archiv geschaut. Und auch dort habe ich keine Header-Files für den PluginManager gefunden. Scheint so, als ob diese einfach fehlen. Langsam frage ich mich, warum man die Entwicklung so kompliziert gestaltet. Ich hatte mir das jedenfalls alles ein wenig einfacher vorgestellt. Kein guter Einstieg bisher. Aber was hilft das Meckern – weiter im Text.

Da ich häufig von dem Problem gelesen habe, nachdem die Entwickler auf Lion umgestiegen sind, habe ich das „Mac OS X 10.6 Core Library“ über XCode (Einstellungen -> Downloads) installiert. Auch dieser Download brachte mir allerdings nichts und meine vermissten Header-Dateien blieben fern. Als nächstes gäbe es noch das „Max OS X Legacy Library„. Den Download spare ich mir allerdings, da ich in der Dokumentation auf der verlinkten Webseite auch nichts zum PluginManager finden konnte.

Mittlerweile habe ich auch einen Befehl gefunden, um die Version der aktuell installierten Frameworks zu ermitteln:

Das Ganze liefert für den PluginManger folgendes:

Ich würde sagen, dass es also besser war, die oben genannte Version nicht zu installieren (1.7.3). Man muss auch mal auf sein Bauchgefühl hören.

Scheinbar geht der einzige Weg wirklich über das FxPlugSDK. Dieses kann man aber scheinbar nur beziehen, wenn man Mitglied im Apple Developer Program ist. Nachteil: Die Mitgliedschaft kostet $99 pro Jahr (das sind aktuell 75€). Das ist mir gerade für ein paar einfach Header-Files zu teuer. Statt dessen versuche ich das SDK über Bekannte zu bekommen, die in dem Programm eingeschrieben sind. An dieser Stelle erstmal ein dickes Dankeschön an Jan.

Gesagt getan, das FxPlug SDK in Version 2.4 war schneller heruntergeladen (ca. 900 KB). Zur Sicherheit lege ich ein Backup des aktuell PluginManager-Frameworks an. Nicht dass das von dem Setup überschrieben wird und am Ende steh ich ohne lauffähige Version von Aperture 3 da – das wäre denkbar schlecht.

Nach der Installation hat sich die Version des PluginManagers jedenfalls nicht verändert – Glück gehabt! Aber sicher ist eben doch sicher. Auch Aperture startet wie gehabt. Aber die Header-Files blieben vorerst verschollen – irgendwie wurde mein PluginManager-Verzeichnis nichtmal verändert. Nach einem Moment des Suchens und des kennenlernens von „pkgutil“ konnte ich schnell ausfindig machen, was der Installer eigentlich getrieben hat:

Alle Dateien befanden sich also unter folgendem Pfad:

Und endlich: Dort fand ich auch die nötigen Header-Files! Nach einem Blick in die Info.plist-Datei des PluginManagers konnte ich allerdings feststellen, dass es sich dabei „nur“ um Version 1.7.4 handelte. Ich hoffe mal, dass sich an der Schnittstelle seit dem nichts getan hat. Die Dateien habe ich dann also nach /Library/Frameworks/usw. kopiert. Schnell XCode gestartet und siehe da: ES BAUT!

xCodeBuild

Die Entwicklung

Nach etlichen Stunden Recherche, ausprobieren, vergeblichen Suchen und jeder Menger Probleme sollte es also nun soweit sein: Ich konnte endlich mit der Entwicklung meiner Erweiterung anfangen – Wahnsinn. Ich wollte die Hoffnung schon fast aufgeben. An dieser Stelle möchte ich noch einmal betonen, wie nervig die Suche nach den nötigen Informationen war. Meiner Meinung nach müsste Apple in dem Download-Bereich mal ordentlich aufarbeiten – sie könnten wenigstens die Downloads anzeigen aber nicht zulassen (wenn man kein Abo hat). So würde man wenigstens nicht in dem Glauben gelassen, irgendetwas zu übersehen.

Damit sich dieser Beitrag nicht noch weiter hinzieht, werde ich das Thema der Entwicklung in einem späteren Beitrag fortführen. In der Zeit könnt ihr natürlich gerne meine Arbeit am Aperture 3 PlugIn auf GitHub verfolgen.

Weitere Quellen

Außerdem gibt es eine Mailing-List für Aperture-Entwickler. In diese habe ich mich einfach mal eingeschrieben – ich bin gespannt ob die aktiv ist und ob überhaupt irgendwann mal etwas gesendet wird.

Selbst in der Flickr-Gruppe von Aperture findet man einige Informationen über PlugIn-Entwicklung.

Andere Plug-Ins

Über

Jahrgang 87, gelernter Softwareentwickler und fast ein Jahrzehnt Erfahrung im Bereich Web-Entwicklung mit PHP und Web-Design. Diese Eigenschaften machen mich zu einem geeigneten und geschätzten Ansprechpartner für die Umsetzung Ihres Projektes. Weiterhin bin ich seit Ende 2013 Magento Certified Developer.