André Krämers Blog

Lösungen für Ihre Probleme

In diesem Beitrag möchte ich die nächsten Fragen meines Developer Media Webinars zur Cross Plattform App Entwicklung in Visual Studio 2015 mit Xamarin und Cordova beantworten. Die Antworten des ersten Teils können hier nachgelesen werden. Wer nicht am Webinar teilnehmen konnte, kann sich die Aufzeichnung übrigens kostenlos bei Developer Media ansehen.

F: Wie kann unter Xamarin die Ländereinstellung (CurrentThread.Culture) verändert werden?

A:  Ich vermute, dass sich die Frage darauf bezieht, dass in meinen Apps die Währungen in $ dargestellt wurden. Dies lag daran, dass mein iOS Simulator und auch mein Android Emulator auf englisch eingestellt waren (EN_US). Ich hätte lediglich in den Einstellungen des Simulators die Ländereinstellungen ändern müssen, dann hätte ich auch das Euro-Zeichen gesehen. Standardmäßig wird also immer die aktuelle Ländereinstellung des Geräts berücksichtigt.

Wie man eine bestimmte Ländereinstellung in seiner App erzwingt, ist in diesem StackOverflow Post beschrieben.

F: Worin genau liegt der Mehrwert von Xamarin, außer, dass es eine vereinheitlichte Sprache ist? Das Layout etc. scheint man ja doch separat machen zu müssen. Das kann man notfalls auch durch einen einfachen Java-to-Whatever compiler erreichen. Ist zwar nicht schön, aber für so viel gespartes Geld kann man darüber hinwegsehen, oder?

A: In den ersten Versionen von Xamarin lagt der Mehrwert tatsächlich darin C# und die .NET Klassenbibliothek plattformübergreifend nutzen zu können. Das Layout musste tatsächlich separat entwickelt werden. Bereits dies sehe ich als großen Mehrwert an, da ich so als .NET Entwickler auf mein bestehendes Wissen bezüglich der .NET Klassenbibliothek zurück greifen kann. Seit Mitte 2014 liefert Xamarin mit Xamarin.Forms nun jedoch auch eine Abstraktionsschicht über die Benutzeroberfläche, die es ermöglicht den Oberflächencode plattformübergreifend zu nutzen.

F: Was hat es nochmal mit dem VB Code auf sich, was anfangs erwähnt wurde?

Xamarin unterstützt zwar zur Entwicklung nur C#, Bibliotheken können jedoch auch in einer anderen .NET Sprache, z. B. VB.NET, geschrieben werden. Wer also VB.NET mit Xamarin nutzen möchte, der legt sich einfach eine VB.NET Portable Class Library an. In dieser kann fast der gesamte Applikationscode enthalten sein. Die eigentlichen Xamarin Projekte enthalten dann nur noch Aufrufe an die PCL. Xamarin beschreibt diese Vorgehensweise hier. Darüber hinaus gibt es auch eine VB.NET Beispielanwendung.

F: Wie erhält (konfiguriert) man den “schnellen” Emulator für Android? Mein Emulator benötigt mehrere Minuten für den Start!

A: Das stimmt, der Standard Android Emulator ist gähnend langsam. Zumindest wenn man ein ARM Image bootet. Schneller geht es, wenn man im AVD Manager des Android SDK einen X86 basierten Emulator anlegt. Der im Webinar gezeigte Emulator ist der Microsoft Visual Studio-Emulator für Android. Anders als der Namen vermuten lässt, funktioniert dieser übrigens auch ohne Visual Studio. Er kann hier kostenfrei herunter geladen werden. Der Emulator basiert auf Hyper-V, bedeutet er kann erst ab Windows 8.1 oder höher genutzt werden. Alternativ können auch die Intel HAXM Treiber genutzt werden. Diese können auch unter Windows 7 eingesetzt werden und beschleunigen den Start eines X86 basierten Android Emulators merklich. Eine Anleitung dazu gibt es direkt bei Intel. Xamarin liefert übrigens auch einen eigenen Android Emulator, den Android Player. Auch dieser startet sehr schnell, ist allerdings aktuell noch in der Preview Phase. Eine weitere Option wäre der kostenpflichtige Emulator von Genymotion.

F: Kann man Xamarin-Forms auch auf dem Mac in Xamarin-Studio einsetzten?

A: Xamarin.Forms kann sowohl auf dem Mac in Xamarin Studio, als auch unter Windows in Visual Studio (oder Xamarin Studio) genutzt werden. Voraussetzung für die Visual Studio Integration ist jedoch eine Starter, Business oder Enterprise Lizenz. In der Indie Edition kann Xamarin.Forms zum derzeitigen Stand nicht genutzt werden. In Xamarin Studio kann es in allen Lizenzvarianten genutzt werden, also auch in der Indie Edition.

F: Wie kann man die App auf ein IOS-Gerät deployen? Ich meinte eigentlich, wie man die APP auf viele Geräte deployed?

A: Xamarin Apps können nach der Paketierung über iTunes Connect in den Apple App Store geladen werden. Dazu ist jedoch ein Apple Entwickler Account notwendig. Außerdem kann die App auch im Unternehmen über einen Enterprise Store verteilt werden, hierzu ist dann eine Mitgliedschaft im Apple Developer Enterprise Program notwendig. Die letzte Version wäre die “Ad Hoc” Verteilung auf bis zu 100 Geräte. Dies wird in der Regel zum Test genutzt. Nähere Infos zu den Optionen gibt es bei Xamarin und Apple. Informationen, wie man Xcode zum Verteilen von Zertifikaten zum Debugging auf einem iPhone / iPad nutzt, gibt es hier.

F: Kann man über Cordova auch SQLite-Datenbanken nutzen? Vermutlich über die Plugins?

A: Das stimmt. Über ein Plugin kann SQLite auch in Cordova genutzt werden. Ein Beispiel für die Nutzung von SQLite in Ionic gibt es hier. Auf Github findet man außerdem den Quellcode eines Plugins.

F: Vor-/Nachteile im Vergleich zwischen Xamarin und Cordova?

A:  Wie bereits im ersten Teil des Posts beschrieben lässt sich diese Frage nicht so pauschal beantworten. Was für den einen ein Vorteil ist, kann für den anderen ein Nachteil sein. So entsprechend Xamarin UIs durch die Nutzung der nativen SDKs in der Regel den UI Anforderungen der jeweiligen Betriebssysteme und sehen somit auf jedem Betriebssystem etwas anders aus. Cordova Anwendungen sehen jedoch meist auf allen Betriebssystemen gleich aus. Ein zu 100 % natives UI kann von Vorteil sein, wenn man eine App für Consumer oder externe Partner schreibt deren Geräte man nicht unter der eigenen Hoheit hat. Diese erwarten in der Regel, dass sich eine App genauso verhält und sie genauso aussieht wie alle anderen Apps auf ihrem Mobilgerät. Schreibt man jedoch eine In-House App für mehrere 100 Mitarbeiter, dann kann der Cordova Ansatz von Vorteil sein. Sieht die Oberfläche nämlich überall gleich aus, dann reduziert dies nicht nur Dokumentations- sondern auch Schulungsaufwände. Schließlich kann hier für alle Betriebssysteme dieselbe Dokumentation / Schulungsunterlage genutzt werden. Ähnlich sieht es mit anderen Kriterien aus. Deshalb sollte immer eine konkrete Entscheidung je App getroffen werden.

Mit der Ermittlung und Bewertung verschiedener Kriterien habe ich mich in den letzten Monaten sehr intensiv beschäftigt. Das Ergebnis ist Kriterienkatalog und eine darauf aufbauende Bewertungsmethode, die eine belastbare und nachvollziehbare Entscheidungsfindung für eine der Alternativen ermöglicht. Details über die Veröffentlichung des dahinter stehenden Models werde ich Anfang nächsten Jahres über meinen Newsletter bekannt geben. Also am besten gleich hier unten auf andrekraemer.de  am Seitenfuß zum Newsletter anmelden.