Programmieren für das iPhone ohne SDK
Wie schwierig ist die Erstellung von Software?
Leider bringt Apple erst ein Jahr nach der Vorstellung des iPhones ein Entwicklerpaket auf den Markt, mittels dessen man eigene Applikationen für das iPhone erstellen, veröffentlichen und unter Umständen verkaufen kann. Viele Entwickler sind nun aber schon dabei, eigene Applikationen auf dem iPhone zu programmieren. Wie kann das gehen?
Zuerst benötigt man einen Compiler und einen Linker, welcher Binärcode für das iPhone erzeugt. Das iPhone setzt keinen PowerPC- oder Intel x86-Prozessor ein, sondern einen ARM-Prozessor, dessen Code sich von den anderen Desktop-Prozessoren unterscheidet. Xcode liefert noch keinen geeigneten Compiler mit, sodass man sich selbst einen kompilieren muss. Im Internet finden sich einige GCC-Varianten auf LLVM-Basis, mit denen dies für den Fachmann mehr oder weniger einfach bewerkstelligen lässt.
Zum eigentlichen Programmieren benötigt man aber noch die Befehlsbibliotheken vom iPhone, die sich aus den Updates von Apple zum iPhone herstellen lassen. Außerdem benötigt man noch die Beschreibungsdateien zu den Bibliotheken, die so genannten Header, in denen steht, wie die Bibliotheken benutzt werden können. Diese kann man sich auf Umwegen aus den Bibliotheken selbst erstellen, auch findet man vorgefertigte leicht im Internet. Auf eine Dokumentation oder Kommentare in den Headern muss man aber verzichten, dies wird erst mit dem Entwicklertoolkit im Februar 2008 kommen.
Hat man den Compiler für den ARM-Prozessor sowie die Bibliotheken und die Header-Dateien beisammen, kann man sich einen so genannten Makefile erstellen, mit dem man sein iPhone-Projekt automatisch kompilieren und linken kann. Zwar steht keine Entwicklungsumgebung wie Xcode zur Verfügung, dennoch kann man so recht effizient Programme schreiben.
Will man ein Programm ausprobieren, landet man beim nächsten Problem: Wie soll man die Applikation auf das iPhone bekommen? Apple lässt es derzeitig nicht zu, das iPhone Dateisystem zu modifizieren. Dazu muss man erst einen so genannten Jailbreak durchführen, mit dem man das Dateisystem des iPhones verändern kann. Dies war mit der Firmware 1.0.2 noch sehr einfach, bei 1.1.1 war es nur über einen Fehler in der TIFF-Implementierung des iPhones möglich, mit der neusten Firmware 1.1.2 muss man sein iPhone vorher wieder auf die alte 1.1.1-Firmware downgraden, um den Fehler in der TIFF-Implementierung ausnutzen zu können. Hat man Zugang zum Dateisystem zum iPhone, kann man einfach einen SSH-Server oder SFTP-Server installieren, um Dateien auf das iPhone hochladen zu können. So lassen sich neue Programme einfach testen.
Für Mac-Entwickler, die hauptsächlich in Objective-C programmieren, ist der Umstieg auf die neuen iPhone-Bibliotheken des iPhones relativ einfach. Zwar gibt es Unterschiede wie die Namensgebung der Klassen (die Listenansicht NSTableView heißt auf dem iPhone einfach UITable), das Verwenden der Klassen ist aber ähnlich wie auf dem Mac möglich.
Leider steht auf dem iPhone anscheinend keine NIBs zur Verfügung. NIBs beinhalten Fenster, Menus oder Dialoge, über die der Entwickler grafisch deren Positionen festlegen kann und so einfach Applikationen gestalten kann und diese dann mit dem eigentlichen Code verknüpfen kann. Somit muss man die gesamte Benutzerschnittstelle manuell im Programmiercode mit allen Positionen zusammenstellen.
Insgesamt ist es für ein Smartphone aber sehr erstaunlich, wie einfach und mit welchen gut zu benutzenden Frameworks Applikationen erstellt werden können. Apple wird die Zeit bis zum Februar nutzen, um Entwicklerwerkzeuge samt Dokumentation fertigzustellen. Es wäre vorteilhaft, wenn Apple eine Art von virtuellen Umgebung anbieten würde, in der man die iPhone-Anwendungen direkt auf dem Mac testen kann, ohne diese erst auf das iPhone kopieren zu müssen.