16.12.2015, 09:00 Uhr
Xamarin für alle! Schulungen und Community
Unsere Erfahrungen zeigen, dass die Anbindung mobiler Geräte in vielen Projekten eine Rolle spielt – sei im medizinischen Bereich im papierlosen Labor, dem Verfolgen von Präsentationen auf Konferenzen, oder dem Erkennen von Problemen anhand der Geräuschentwicklung.
Xamarin ist neben Webapps eine der Technologien, für die wir uns nach der Analyse der Anforderungen am häufigsten entscheiden: aus dem selben Code können native Anwendungen für iOS, Android und den Desktop erzeugt werden.
Community
Wissensaustausch liegt bei uns in den Genen. Deshalb halten wir regelmässig Vorträge und organisieren Events, bei denen Xamarin-Interessierte die Möglichkeit haben sich mit erfahreneren Entwicklern auszutauschen. Die nächsten Meetups, die bei Zühlke stattfinden, sind:
- Xamarin Pizza & Beer am 09.12.2015 in München, Thema: Xamarin 4.0
- Mobile App Security der Xamarin User Group Frankfurt am 20.01.2016 in Frankfurt
Workshop
Christian Eder und ich, die Xamarin seit der ersten Version in Projekten einsetzen, führen regelmässig Workshops bei Kunden durch, die Ihre Teams auf die Entwicklung mit Xamarin vorbereiten wollen. Im Vorfeld werden besondere Bedürfnisse mit dem Kunden abgeklärt und die Schulung ggf. auf spezielle Anforderungen (wie z.B. Schwerpunkt Testing oder Verwendung von Bluetooth Low Energy) angepasst. Vom 18.11. ? 20.11.2015 führten wir diesen Workshop an unserem Münchner Standort durch, um unsere Kollegen im Umgang mit Xamarin Android und iOS zu schulen.
Sag mir wieviel Xamarin du kannst und ich sage dir wie alt du bist!
Im praktischen Teil der Schulung, der ca. 50% ausmachte, entwickelten wir eine App, die Gesichter auf einem Foto erkennt und das Geschlecht sowie das geschätzte Alter anzeigt. Ziel dieses Beispiels war es, viele Punkte der theoretischen Abschnitte aufzugreifen, praktisch zu demonstrieren und zu üben. Anhand dessen konnten Themen wie Projektsetup, MvvMCross, UI (Android und iOS), Verwenden von Libraries (Plugin für den Zugriff auf die Kamera) und Webservices verinnerlicht werden. Die App verwendet die Microsoft Project Oxfort Face APIs. Somit konnten wir den Teilnehmern vor Augen führen, wie schnell und einfach Cross Platform Apps mit Xamarin entwickelt werden können.

Screenshot der entwickelten Gesichtserkennungsapp.
Inhalte der Schulung
Die Schulung hat das Ziel den Teilnehmern die Grundlagen, Techniken und potentielle Probleme von mobiler Entwicklung mit Xamarin zu vermitteln. Die Schwerpunkte liegen auf folgenden Themen:
Xamarin Grundlagen
Im Grundlagenteil wurde den Teilnehmern ein Überblick über die prinzipielle Funktionsweise von Xamarin gegeben. Sie lernten wie es Xamarin schafft, C# Code auf iOS und Android auszuführen, welche Unterschiede es auf beiden Plattformen gibt, welche Tools dafür benötigt werden und wie die Projekte erstellt werden müssen. Des Weiteren wurden die Unterschiede zwischen Xamarin und den anderen Technologien wie Webapps, Hybridapps und nativen Apps aufgezeigt. Obwohl Xamarin 4.0 erst am Abend vor dem Workshop veröffentlicht wurde, scheuten wir keine Mühen und zeigten den Teilnehmern auch neue Xamarin Features, wie den Test Recorder, oder wiesen zumindest im theoretischen Teil auf die Neuerungen, wie z.B. Änderungen des Preismodells, hin.
Codesharing
Xamarin ermöglicht es Code zu schreiben, der auf mehreren Plattformen ausgeführt werden kann. Das Ziel ist es einen möglichst hohen Codesharinganteil zu erreichen. In diesem Teil der Schulung erhielten die Teilnehmer einen Überblick über die wichtigsten Techniken und Patterns, wie z.B. PCLs, Shared Librarys, Plugins und Conditional Compilation.
MvvMCross
MvvMCross ist ein MvvM-Framework, welches wir seit mehreren Jahren erfolgreich in vielen unserer Projekte einsetzen. Durch seine Architektur und die Vielzahl der Plugins hilft uns MvvMCross dabei den Codesharinganteil zu erhöhen. Neben Geschäftslogik müssen dank MvvMCross auch die Viewlogik (ViewModels) und die Navigation zwischen den Views nur einmal implementiert werden.
Build & Deploy
Das Erstellen und Publizieren der Apps unterscheidet sich bei Xamarin kaum zu dem Vorgehen bei nativen Apps. Es gibt jedoch viele Feinheiten, auf die geachtet werden muss, damit einer erfolgreichen Veröffentlichung der App in den App-Stores nichts im Weg steht:
- Dependency Injection vs Linker: Durch den Einsatz von Dependency Injection sind nicht mehr alle Abhängigkeiten für den Linker sichtbar. Dieser neigt dann dazu genutzte Funktionalität aus dem Code zu entfernen. Das kann zu Abstürzen oder anderem Fehlverhalten führen. (https://developer.xamarin.com/guides/android/advanced_topics/linking/)
- Gründe für die Ablehnung beim App-Store Review: https://developer.apple.com/app-store/review/rejections/
- Assets sollten für alle unterstützten Geräteklassen (Auflösung, Sprache, ?) bereitgestellt werden
Testing
Die Qualität der Anwendung wird durch Testen sichergestellt. In der Schulung wurden daher die Testtechniken Unit-Tests, UI-Tests (manuell, automatisch, Cloud) erläutert und an Beispielen demonstriert. Des Weiteren wurden Tools wie TestFairy oderHockeyApp gezeigt, die dazu dienen, die Vorabversionen leicht auf die Geräte der Tester zu verteilen.
Xamarin.Forms
Mithilfe von Xamarin.Forms können Oberflächen erstellt werden, die auf mehreren Plattformen verwendet werden können, ohne das native Look & Feel zu verlieren. Xamarin.Forms wurde in den letzten Monaten sehr verbessert und wird mittlerweile auch in einigen unserer Projekte verwendet. In diesem Abschnitt haben wir die zuvor nativ implementierten Beispiele in Xamarin.Forms umgesetzt und einige Vor- und Nachteile erläutert. Die Teilnehmer können daher in zukünftigen Projekten fundiert auswählen welche der möglichen UI-Techniken verwendet werden soll.