Plattformübergreifende App-Programmierung mit Delphi und Xamarin

Seite 2: Xamarin

Inhaltsverzeichnis

Mono ist der etwas mehr als zehn Jahre alte portable Open-Source-Nachbau der .NET-Umgebung für Windows, Linux, einige Unix-Derivate und Mac OS X. Damit ist es möglich, .NET-Programme unter den oben aufgeführten Betriebssystemen laufen zu lassen. Außer dem Framework gehören Compiler für C#, F# und Visual Basic zum Projekt.

Kurze Zeit nach dem Erscheinen des iPhones begann der damalige Mono-Verwalter Novell mit der Entwicklung eines auf der CLI-Implementierung basierenden Frameworks für iOS. Schon bald stellte das Unternehmen das MonoTouch-Projekt vor. Es ermöglichte den Aufruf der iOS-APIs vom .NET-Code und die Entwicklung von iOS-Applikationen wahlweise in den IDEs MonoDevelop oder Visual Studio. Nach dem Erscheinen der ersten Android-Geräte betrieb das Unternehmen die Entwicklung auch in Richtung Googles Betriebssystem voran.

Infolge der Übernahme von Novell durch Attachmate wurden jedoch 2011 die meisten Mono-Entwickler entlassen. Miguel de Icaza, Erfinder von Mono, gründete daraufhin die Firma Xamarin und sicherte sich die unbefristete Erlaubnis für die Nutzung der Mono-Lizenzen. MonoTouch wurde außerdem in Xamarin umbenannt. Um mit Microsoft keine lizenzrechtlichen Probleme wegen der Verwendung der Microsoft-APIs und Sprachen zu bekommen, wurde eine gegenseitige Zusammenarbeit angestrengt, denn Mono kompiliert direkt in die MSIL (Microsoft Intermediate Language) und stellt auch Microsoft-APIs zu Verfügung.

Das Besondere an Xamarin ist, dass es je nach Zielumgebung zwei Ansätze gibt, um C#-Programme auf der jeweiligen Hardware ausführen zu können. Bei Android wird zusammen mit dem in IL (Intermediate Language) kompilierten Code ein JIT-Compiler (Just in Time) ausgeliefert, damit gibt es ein ähnliches Verhalten wie unter Windows. Der IL-Bytecode wird während der Laufzeit in Maschinensprache kompiliert und anschließend ausgeführt. Da ein solches Verhalten unter iOS gegen die Apple-Richtlinien verstoßen würde, wird hier die Kompilierphase vorweggenommen, ein direkt ausführbarer Maschinencode steht dann Apple-konform für das Deployment bereit.

Um iOS-Applikationen mit Xamarin zu entwickeln, braucht man minimal einen Mac-Rechner einer recht neuen Generation. Xamarin installiert dort während des Setup-Vorgangs das Mono-Framework, eine modifizierte MonoDevelop-IDE, Xamarin Studio genannt, und das Xamarin.iOS-Framework. Außerdem setzt Xamarin eine aktuelle Version von Xcode voraus. Vor der im Sommer erschienenen Version 5 von Xamarin Studio mussten Entwickler die UI im Interface Designer von Xcode zusammenbauen und je einen Objective-C-Stub für die den Dialogen und Bedienelementen zugrunde liegende Klassen fertigstellen. Nach dem Speichern wurde automatisch, sofern noch nicht vorhanden, ein Stub-Pendant in der Xamarin-IDE angelegt respektive der vorhandene erweitert. Dort hatte man dann Zugriff auf alle Properties und Events, die zuvor im Objective-C-Stub eingerichtet wurden.

Xamarin IDE mit iOS-Designer

Diese doch recht komplizierte, wenn auch teilautomatisierte Vorgehensweise wurde in der Version 5.0 der IDE durch einen integrierten UI-Editor, den Xamarin Designer, ausgetauscht. Er erleichtert das Erstellen dialogorientierter Anwendungen dadurch, dass jetzt das Umschalten zwischen Xcode und Xamarin komplett entfällt. Außerdem entfällt die Eingabe der Verbindungen zwischen den Bedienelementen und den Properties oder den Events und wird durch das aus Visual Studio bekannte Eintragen beziehungsweise Auswählen des Namens der Property/des Eventhandlers direkt im Eigeschaftseditor der jeweiligen IDE ersetzt.

Die zwar den Apple-Programmierern vertraute, aber für Programmierer, die bisher mit IDEs wie Visual Studio oder Delphi zu tun hatten, gewöhnungsbedürftige Methode des Ziehens von Verbindungen zwischen Bedienelement und der Property oder dem Eventhandler mit der Maus wurde durch den neuen Editor komplett abgelöst. Jedoch kann sie, sollte diese Vorgehensweise weiterhin gewünscht werden, parallel zur neuen Methode angewandt werden.

Will man die Anwendungen mit Xamarin unter einer aktuellen Version von Visual Studio entwickeln, muss man zusätzlich zum Mac einen PC verwenden. Bei ausreichender Menge an Hauptspeicher kann man außerdem den PC-Part auf dem Mac durch eine virtuelle Machine in Parallels oder VMware ersetzen. Auch in Visual Studio steht der neu entwickelte Interface-Editor in vollem Umfang zu Verfügung.

Die kompilierte Anwendung lässt sich im Xcode-SDK-Emulator oder auf einem realen Gerät testen. Selbst der weitere Prozess der Signierung und die Vorbereitung des für den App Store oder Enterprise-Deployments kann der Entwickler innerhalb der Xamarin-IDE vollständig abwickeln. Aber er kann auch nach Belieben innerhalb der Xcode-IDE erfolgen.

Die Xamarin-Entwicklung für Android-Geräte kann sowohl auf dem Mac als auch auf einem PC erfolgen. Auch hier werden das Mono-Framework, die IDE und das Android-Framework installiert. Darüber hinaus wird wahlweise ein Android-SDK eingebunden oder – falls keines vorhanden ist – ein aktuelles aus Googles Repository heruntergeladen.

Xamarin IDE mit Android-Designer

Bei der Entwicklung mit Visual Studio wird ausschließlich ein Windows-PC benötigt. Dabei bindet der Entwickler ein Plug-in ein, über das er auf einen Interface Editor und den Emulator zugreifen kann. Im Xamarin Studio hat man das komplette SDK von Google integriert, die sonst unter Eclipse verfügbaren Editoren für die Ressourcen (insbesondere die UI) und der SDK- sowie der Emulator-Manager sind hier komplett verfügbar. Das Handling der Tools wurde gegenüber dem auf Eclipse basierenden SDK verbessert und besser strukturiert.

Die Struktur des Projekts ist mit dem üblichen Android-Anwendungsbaum mit Source und Ressourcenzweigen vergleichbar. Durch die Nähe von C# zu Java lässt sich der bisher programmierte Code auch recht einfach übertragen. Wie unter iOS kann hier das Ergebnis wahlweise auf dem aus dem Emulator des SDKs oder auf einem angeschlossenen Smartphone beziehungsweise Tablet getestet werden.

Gut gelöst wurde auch das Einbinden der Emulationen. Man kann wahlweise die Emulatoren aus dem SDK benutzen, die kontinuierlich verbessert und auch schneller werden. Hierbei bietet es sich an, ein Intel-basiertes Image zusammen mit dem Intel-HAXM-Virtualisierer zu verwenden. Alternativ kann man einen derzeit noch in der Beta-Phase befindlichen Xamarin-eigenen Emulator nutzen. Er bietet eine bessere Performance als der Emulator aus dem SDK und zugleich die Emulation etablierter Smartphone-Modelle an.