Android-Entwicklung jenseits von Google

Android-Entwickler haben sich tendenziell mit einem Duopol abgefunden: Wer nicht mit Googles Werkzeugen arbeitet, schreibt seine Apps stattdessen mit PhoneGap. Es gibt jedoch noch einige andere Tools, die App-Entwickler mit neuen Möglichkeiten versorgen.

In Pocket speichern vorlesen Druckansicht 8 Kommentare lesen
Lesezeit: 23 Min.
Von
  • Tam Hanna
Inhaltsverzeichnis

Android-Entwickler haben sich tendenziell mit einem Duopol abgefunden: Wer nicht mit Googles Werkzeugen arbeitet, schreibt seine Apps stattdessen mit PhoneGap. Es gibt jedoch noch einige andere Tools, die App-Entwickler mit neuen Möglichkeiten versorgen.

Aus didaktischen Gründen seien die vorgestellten Werkzeuge in drei Gruppen unterteilt. Zuerst wird ein Blick auf klassische Entwicklungsumgebungen geworfen, die manchen Entwicklern vom Desktop her bekannt sein dürften. Spieleentwickler greifen schon lange auf spezielle IDEs zurück, deren Funktionsumfang auf das Realisieren von Games und Animationen optimiert ist. Diese Werkzeuge bringen diverse Erweiterungen wie eine 3D-Engine mit. Im Laufe der letzten Monate haben einige Anbieter ihr Augenmerk auf den Mobilmarkt gerichtet.

Schließlich werden IDEs berücksichtigt, die auf die Entwicklung von Applikationen für Smartphones optimiert sind. Eine damit realisierte Applikation lässt sich oft nicht ohne Weiteres auf den Desktop bringen – der schnellere Entwicklungsprozess amortisiert diesen Nachteil jedoch in vielen Fällen.

Einige Entwicklungsumgebungen gibt es schon seit gefühlt einer Ewigkeit. Aufgrund der zunehmend größer werdenden Popularität von Android werden sie mittlerweile Schritt für Schritt um Unterstützung für Googles Betriebssystem erweitert.

Microsofts Marketingabteilung sah .NET anfangs als Marketingwerkzeug. Das bedeutet, dass die Spezifikation der als Basis dienenden MSIL zwar offen war – einen Interpreter samt Bibliotheken gab es indes nur für hauseigene Betriebssysteme.

Ein als Mono bezeichnetes Projekt versuchte sich erfolgreich an der Implementierung eines quelloffenen Interpreters, der in MSIL gehaltene Programme ausführte. Nach mehreren Eigentümerwechseln landete das Produkt bei Xamarin, wo es auf iOS und Android portiert wurde.

Microsoft kündigte im Dezember 2014 an, Teile des hauseigenen Interpreters zwecks Vereinheitlichung der Plattform als Open-Source-Code anzubieten. Noch ist nicht abschätzbar, wie sich diese Änderungen auf Xamarin auswirken. Eindeutiger ist, dass sich Xamarins hauseigenes Produkt mit der vor wenigen Monaten erschienenen Version 3.0 stark veränderte. Die IDE beschränkte sich bisher darauf, Entwicklern einen Wrapper für die existierenden APIs von Android und iOS anzubieten.

Als Beispiel dafür sei ein Blick auf eine aus dem Projektskelett entnommene Routine geworfen:

protected override void OnCreate (Bundle bundle) 
{
base.OnCreate (bundle);

// Set our view from the "main" layout resource
SetContentView (Resource.Layout.Main);
// Additional setup code will go here

}
SetContentView (Resource.Layout.Main);
}

Android-Entwickler merken sofort, dass sie es hier mit der nativen, von Google spezifizierten API zu tun haben. Der einzige relevante Unterschied liegt darin, dass die Funktionen nun mit C# angesprochen werden.

Die dritte Version von Xamarin bietet mit Xamarin.Forms einen plattformunabhängigen GUI-Stack an, der aber keinen WYSIWYG-Editor enthält. Anwender erhalten 19 Steuerelemente, die in einer Gruppe von Layouts einbaubar sind.

Xamarin wird mit einer Vielzahl von Layouts ausgeliefert (Abb. 1).

(Bild: http://xamarin.com/forms)


Xamarin ist allerdings alles andere als preiswert. Pro Plattform und Entwickler fällt eine Lizenzgebühr von knapp 1000 US-Dollar an – beim gemeinsamen Kauf von Android und iOS gibt es oft kleine Sonderrabatte.

Nokias Niedergang hatte kaum einen Einfluss auf die Geschicke des Cross-Plattform-Frameworks Qt – zu groß war die Zahl der am Weiterbestehen des Produkts interessierten Stakeholder, und schließlich gingen die Rechte an Digia. Das Framework wird als Lösung für alle Fragen im Bereich der Entwicklung von Cross-Plattform-Applikationen positioniert: Es gibt einen GUI-Stack, eine IDE und ein Build-System, die für alle Plattformen gleichermaßen zur Verfügung stehen. Eine nur auf Qt-Elementen basierende Applikation funktioniert – zumindest in der Theorie – auf allen unterstützten Betriebssystemen: In der Praxis sind manchmal minimale Änderungen erforderlich.

Bei korrekter Anwendung der Werkzeuge können Entwickler mit nativen Elementen versehene Applikationen realisieren, ohne dabei auf die IDE des Plattformanbieters zugreifen zu müssen. Das wird durch ein als qmake bezeichnetes Werkzeug realisiert. Es nimmt .pro-Dateien entgegen, die die Projektstruktur beschreiben. Ihr prinzipieller Aufbau sei durch folgendes Beispiel demonstriert:

QT       += core gui 
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = GarterCarlo
TEMPLATE = app

SOURCES += main.cpp\
mainwindow.cpp

HEADERS += mainwindow.h

FORMS += mainwindow.ui

.pro-Dateien dienen als eine Art "Index", der alle im Projekt enthaltenen Quelldateien samt eventuell notwendigen plattformspezifischen Einstellungen auflistet. qmake nimmt die Datei entgegen und wandelt sie in für das native Kompilierwerkzeug verständliche Makefiles um. Diese erledigen die eigentliche Kompilierung danach im Alleingang. Da qmake die Quellcode-Dateien nicht verändert, lässt sich nativer Code in durch den Präprozessor abgesicherte "Codeinseln" verpacken. Als Beispiel dafür sei die folgende Passage herangezogen, die die Nutzung der Symbian-Sound-APIs illustriert:

QtBallZ::QtBallZ(QWidget *parent) 
: QMainWindow(parent)
{
ui.setupUi(this);

// lock orientation ? S60 code
CAknAppUi* appUi = dynamic_cast<CAknAppUi*>(CEikonEnv::Static()
->AppUi());
if(appUi){
QT_TRAP_THROWING(appUi ->SetOrientationL(
CAknAppUi::EAppUiOrientationLandscape));
}

// some more Qt code

ApplicationPrefs::initPrefs();
this->showFullScreen();

myTimerID=startTimer(75);
}

Als Argument gegen Qt ist die Fragmentierung der Plattform anzuführen. Entwickler können ihre Applikationen mit drei verschiedenen GUI-Stacks realisieren. Die seit jeher verfügbaren Widgets (ehemals QtGUI) werden mit einem leistungsfähigen WYSIWYG-Designer ausgeliefert und sind zur Darstellung großer Datenmengen geeignet. Das neuere QML ist eine Art "JavaScript für GUIs", das seine Stärken bei Animationen ausspielen kann. Widgets und QML lassen sich miteinander mischen: Es ist problemlos möglich, ein QML-Skript in ein per Widgets realisiertes Formular einzubinden.

Widgets sind für die Realisierung klassischer Benutzerschnittstellen ideal (Abb. 2)

QML ist für die Erstellung Sprite-basierter GUIs vorgesehen (Abb. 3).

Für BlackBerry steht mit Cascades zudem ein dritter und mit nichts anderem kompatibler GUI-Stack zur Verfügung. Seine Nutzung verbietet das Verwenden von QML oder Widgets, da er einen komplett anderen Rendering-Pfad voraussetzt.

Cascades bietet eine besondere Optik, die aber nur beim BB10 zur Verfügung steht (Abb. 4).

Die Qt-Varianten für Mobilgeräte sind teilweise nur im Rahmen einer kommerziellen Lizenz erhältlich. Die Preise beginnen hier bei rund 20 Euro im Monat.

Bei NS Basic (NS = Nice and Simple) handelt es sich um eine vage an Visual Basic angelehnte Programmiersprache, mit der sich durch einen Interpreter auszuführende Applikationen realisieren lassen. Der Intepreter wurde anfangs für Palm OS, Windows CE und den Desktop angeboten. Im Laufe der Zeit ersetzte der Hersteller die Laufzeitumgebung durch ein auf diversen Webstandards aufgebautes System. Die im folgenden Snippet illustrierte Syntax wird vor der Ausführung in JavaScript umgewandelt und mit den im WYSIWYG-GUI-Designer zusammengestellten Formularen kombiniert:

Sub cmdAdd_onclick() 
Dim FirstNumber
Dim SecondNumber
Dim Total

FirstNumber = CSng(txtFirstNo.value)
SecondNumber = CSng(txtSecondNo.value)
Total = FirstNumber + SecondNumber

txtTotal.value = Total
End Sub

NS Basic erinnert an ältere Versionen von Visual Studio (Abb. 5).

Das Intermediärkompilat basiert auf verbreiteten Bibliotheken wie PhoneGap und diversen jQuery-Derivaten. Dank ihrer breiten Kompatibilität sind die resultierenden Applikationen auf so gut wie jedem Computersystem lauffähig – es muss "nur" Webapps ausführen können.

NS Basic ist eine der preiswertesten IDEs in dieser Untersuchung. Die Einzellizenz bekommen Entwickler normalerweise für weniger als 200 US-Dollar; Supportverträge haben vergleichsweise "humane" Preise.

Die von Borland initiierte IDE Delphi wird nach wie vor weiterentwickelt – seit einigen Jahren unter den Fittichen von Embarcadero. Wie schon früher dürfen Entwickler immer noch auf einen WYSIWYG-Editor zurückgreifen, der die Realisierung der Benutzerschnittstelle ohne aufwendige Codierung ermöglicht. Eine als FireDAC bezeichnete Datenabstraktionsschicht sorgt dafür, dass Zugriffe auf Datenbanken verschiedener Hersteller über ein einheitliches Interface erfolgen.

Die Nutzung von Delphi ist dabei gar nicht verpflichtend. Embarcadero unterstützt C++ seit Jahren mit dem C++Builder; die derzeitige Version sorgte für "Sprachparität" zwischen Android und iOS. Die Angebote von Embarcadero lohnen sich insbesondere dann, wenn man bereits mit den Entwicklungsumgebungen des Herstellers aufgewachsen ist. Die Cross-Plattformunterstützung ist mit dem anderer Anbieter gebotenen vergleichbar; der Einsatz von FireDAC spart mitunter viel Zeit.

Wer existierenden Code weiterverwenden möchte, muss ihn an das LLVM-Backend anpassen. Der Grad der notwendigen Änderungen ist von der inneren Architektur einer Applikation abhängig. Strings sind die häufigste Ursache für Fehler, da etliche Klassen (WideString, AnsiString, ShortString, AnsiChar, PansiChar, PwideChar und OpenString) mittlerweile abgekündigt wurden. Portierungswillige Entwickler finden im Embarcadero-Wiki weitere Informationen zum Thema.

Embarcaderos RAD Studio, in dem Delphi und C++Builder konfektioniert sind, ist alles andere als preiswert. Die Version mit dem geringsten Funktionsumfang kostet ohne FireDAC rund 2500 Euro pro Entwickler, Upgrades werden mit 1350 Euro verrechnet. Die Nutzung der hier angebotenen Recharge-Option mag bei der Kostenreduzierung hilfreich sein.

Es gibt kaum jemanden, der kein Spiel im Handy hat: In Analysen und Umfragen belegen Spiele so gut wie immer den Spitzenplatz. Als Beispiel seien hier die in der Abbildung gezeigten Zahlen von AppFlood gezeigt, die das Verhalten chinesischer User analysieren.

Arcade-Spiele sind populär (Abb. 6)

(Bild: http://appflood.com/appflood-wordpress/wp-content/uploads/2014/02/CNY-10-Most-Popular-Android-App-Categories.png)

Die permanente Weiterentwicklung der Hardware ging mit steigenden Ansprüchen auf Seiten der Userschaft einher. Wer heute eine akzeptable 3D-Engine im Alleingang programmiert, muss Mannjahre investieren. Im Laufe der Zeit entstanden Anbieter von "Engine-Halbzeug": Wer seine Spiele auf Basis eines derartigen Produkts aufbaut, spart Arbeitszeit.

Die im oberbayerischen Schrobenhausen ansässige Firma CIRIC ist für die Entwicklung von Embedded-Systemen bekannt. Im Rahmen ihres Consulting-Geschäfts hat sie häufig verwendete Routinen angesammelt, die das Erledigen der im Rahmen der Erstellung optisch ansprechender Benutzerschnittstellen anfallenden Aufgaben beschleunigen sollen. So entstand im Laufe der Zeit eine als CMORE 3D bezeichnete Arbeitsumgebung, die seit einiger Zeit auch am freien Markt verkauft wird.

Zum Verständnis der hinter CMORE 3D und der später noch beleuchteten Spiele-Engine Unity stehenden Logik sei ein kurzer Exkurs in die Welt der Spieleprogrammierung gewagt. Wer mit DirectX und/oder OpenGL entwickelt, realisiert die einzelnen Spielsituationen mit dedizierten Klassengruppen. Spieleengines wie CMORE 3D bilden dieses Konzept über Szenen ab. Dabei handelt es um eine Sammlung aus Grafiken, Shadern, Skripten und sonstiger Logik, die gemeinsam auf den Bildschirm gebracht werden. Fortgeschrittene Funktionen werden durch Code realisiert, der ebenfalls in die Szene wandert.

Shaderprogramme, Modelle und Logik einer Szene erscheinen gemeinsam im Editor (Abb. 7).

Der Sinn dieser Unterteilung liegt darin, dass die Handhabung komplexer Spiele so vereinfacht wird. Änderungen in einer Szene wirken sich normalerweise nicht auf ihre "Brüder" aus, was zu einer Erhöhung der Wartbarkeit führt. Bei CMORE 3D kommt an dieser Stelle C++ zum Einsatz, Skripte entstehen unter anderem in Lua.

Fertiggestellte Szenen erscheinen dank Remote Rendering ohne langwierige Kompilierung am Smartphone (Abb. 8).

Dank "Remote Rendering and Editing" lassen sich die erstellten Szenen direkt von der IDE aus auf Endgeräten rendern. So können Entwickler die Darstellung ohne Rekompilierung der nativen Applikation überprüfen, was beim Feintuning des Spiels Zeit einspart.

Als Hauptargument für die Nutzung von CMORE 3D wird die breite Plattformunterstützung angeführt. Neben Windows, Mac OS X, QNX und Linux ist das Framework auch unter iOS, Android, BlackBerry 10 und sogar am PlayBook lauffähig. Aus preislicher Sicht ist CMORE 3D attraktiv. Eine Vollversion des Produkts kostet samt IDE knapp 500 Euro pro Entwickler; eine kostenlos verfügbare Demoversion erlaubt das Testen der Features.

Hinter GameMaker steht ein Unternehmen, das auf jahrelange Erfahrung im Spielebereich zurückblicken kann. Die 1999 als 2D-Engine vorgestellte Programmierumgebung wurde im Laufe der Jahre um diverse Funktionen erweitert. Mittlerweile gibt es sogar eine 3D-Engine, die im Vergleich zur Konkurrenz allerdings eher rudimentär ausfällt.

Die hinter dem Programm stehende Grundidee ist die Reduzierung von Codeeingaben: Das Benutzer-Interface des Produkts erlaubt das Erstellen von Spielen ohne das Eingeben von klassischem Code. Events lassen sich mit Aktionen verbinden, um die Logik des Spiels zu realisieren.

Falls ein Spiel mit den Möglichkeiten des WYSIWYG-Moduls nicht auskommt, können Entwickler auf eine als Game Maker Language bezeichnete Programmiersprache zurückgreifen. Bei der Betrachtung von GameMaker muss die Verfügbarkeit von Decompilern erwähnt sein. In der Vergangenheit tauchten immer wieder Programme auf, die die von der IDE erstellten Binärdateien in den Quellcode umwandeln konnte.

GameMaker wird in drei Lizenzvarianten vertrieben. Die kostenlose Standardversion ermöglicht den Export von Spielen für Windows – iOS und andere lassen sich nicht nachrüsten. Das ist erst ab der für rund 100 Dollar erhältlichen Pro-Version möglich, wo dafür allerdings ein plattformabhängiger Obolus anfällt. So kostet der Export für Android knapp 300 Dollar, Tizen ist hingegen schon für rund 200 Dollar verfügbar. In der für etwa 800 US-Dollar verfügbaren Master Collection ist das nicht mehr notwendig.

Den besprochenen Spiele-Entwicklungs-Engines haftet der Ruf an, nur für semiprofessionelle Programmierer vorgesehen zu sein. Unitys beispielloser Erfolg hat die gesamte Branche "verjüngt": Alle etablierten Konsolenhersteller arbeiten mit dem in San Francisco ansässigen Unternehmen zusammen. Laut Marktforschern entstehen mehr als 50 aller für Smartphones entwickelten Spiele mit diesem Produkt.

Aus technischer Sicht verhält sich Unity mehr oder weniger identisch zur CMORE 3D. Spiele entstehen aus einer Gruppe von Szenen, der im Hintergrund liegende Code entsteht in C# oder JavaScript

Die Lizenzierung von Unity ist vom erzielten Umsatz und den Ansprüchen an die Engine abhängig. Wenn ein Unternehmen weniger als 100.000 Euro pro Jahr umsetzt, hat es die Wahl zwischen Unity und Unity Pro. Erstere Variante ist kostenlos erhältlich, während die mit mehr Features ausgestattete Basisversion von Unity Pro ihren Besitzer für etwa 1500 US-Dollar wechselt. Unter Android und iOS arbeitende Programmierer können auf Wunsch weitere Funktionen für die jeweilige Plattform freischalten: Auch hier sind je 1500 US-Dollar pro Lizenz fällig.

In einem als Asset Store bezeichneten Portal bieten Drittentwickler diverse Werkzeuge und Modelle an. Die hier entstehenden Kosten sind vom Investitionsvolumen abhängig: Wer seine gesamten Modelle und Soundeffekte dort bezieht, sollte mit einigen hundert Euro Mehrkosten rechnen.

Das für rund 90 US-Dollar erhältliche Add-on ShaderForge hilft beim Erstellen von Shadern (Abb. 9).

Der 2010 erstmals vorgestellte App Inventor sollte Quereinsteigern das Erstellen von Programmen für Android erleichtern. Google hat das Projekt mittlerweile an das MIT abgetreten, wo es eine langsame, aber stetige Weiterentwicklung erfährt. Neben der als Web-App implementierten Formulardesignumgebung müssen Entwickler auf eine als lokales Java-Applet realisierte Anwendung zurückgreifen. Das in Abbildung 10 gezeigte Programm erlaubt ihnen das Realisieren von Programmlogik durch das Zusammenstellen vorgefertigter Blöcke.

Die "Beinchen" der Puzzleteile nehmen Parameter entgegen (Abb. 10).

App Inventor ist kostenlos, allerdings aufgrund des beschränkten Funktionsumfangs für den professionellen Entwickler eher uninteressant: Ist eine App nicht mit den vorgefertigten Blöcken konstruierbar, müssen Entwickler auf eine von Scheme abgeleitete Programmiersprache zurückgreifen.

Unternehmens-Apps sind im Consulting-Geschäft populär, daher ist an dieser Stelle auf die AppMachine hinzuweisen. Es handelt sich dabei um einen an App Inventor angelehnten Dienst, der auf das Erstellen derartiger Applikationen spezialisiert ist. Das bedeutet, dass Produktkataloge, Newsreader und die Integration in soziale Netze dank vorgefertigter Module rasch von der Hand gehen. Als besonderes Gimmick gibt es eine Scanfunktion, die die Webseite von Kunden analysiert und die Basis einer Companion App automatisch generiert. In der Pro-Version dürfen Entwickler die im Produkt eingebaute Logik zudem um handgeschriebenes JavaScript erweitern.

AppMachine ist alles andere als preiswert. Der pro erstellter Applikation anfallende Obolus rangiert im Bereich von 19 bis 99 Euro pro Monat; die Entfernung des im About-Bildschirm erscheinenden AppMachine-Logos schlägt mit weiteren 250 Euro zu Buche.

Anywhere Software sah vor einigen Jahren seine als Basic4PPC bezeichnete Entwicklungsumgebung als preiswerten und einstiegsfreundlichen Ersatz fürVisual Basic. Aus der damals auf Basis eines Interpreters arbeitenden IDE ist mittlerweile ein vollwertiger Compiler geworden, dessen Effizienz mit nativen Programmen mithält. Die ehedem notwendige Laufzeitumgebung ist nicht mehr mit von der Partie, was die leidige Diskussion über mögliche Dekompilierung im Keim erstickt. B4A erlaubt vergleichsweise systemnahes Arbeiten: Das Produkt reicht die einzelnen Activities in Basic durch, was Entwicklern das Eingreifen in den Applikationslebenszyklus erlaubt.

Neben der Android-Version bietet Anywhere Software mit B4J eine Alternative für die Desktop-Entwicklung an. Sie unterscheidet sich von B4A insofern, als die Kompilate für das am Desktop verbreitete JavaFX-Framework vorgesehen sind. Aufgrund der engen Integration zwischen B4A und Android lassen sich Apps nur teilweise am Desktop weiterverwenden.

B4J ist kostenlos. Wer B4A nutzen möchte, wird mit mehreren Lizenzierungsvarianten versorgt. Die mit 59 US-Dollar preiswerte Basisversion bekommt zwei Monate lang Upgrades, für 119 US-Dollar gibt es eine zwei Jahre lang Upgrade-berechtigte Version.

Flash galt vor mehr als zehn Jahren als absolutes Muss. Im Bereich des Plattform-Supports kämpft Adobe seit geraumer Zeit ein Rückzugsgefecht. BlackBerry hat das Framework mit OS 10.3 entfernt, Nutzer von Android zeigen sich über den zusätzlichen Download der Laufzeitumgebung oft nicht sonderlich erfreut.

Im Grunde genommen handelt es sich bei AIR um eine Art Embedded-Browser, der mit einem Flash Player ausgestattet ist. Eine AIR-App ist somit nur eine Webseite, die von der Runtime mit speziellen Funktionen wie dem Zugriff auf das Dateisystem des Hosts ausgerüstet wird. Dank der Integration der Flex-Runtime müssen ActionScript-Entwickler nicht umlernen: Die mittlerweile von Apache verwaltete Laufzeitumgebung ist ein "first class citizen" von AIR.

Leider hat Adobe die Unterstützung für Linux schon 2011 eingestellt. Für Entwickler ist das doppelt schade: Erstens erfahren die diversen SDKs keine weitere Pflege, zweitens sind unixoide Systeme nicht mehr als Target zugelassen.

Die bei der Nutzung von AIR anfallenden Kosten sind von der individuellen Toolchain abhängig. Adobe bietet das SDK kostenlos an, womit sich "vorliegende" Applikationen verpacken lassen. Der Zugriff auf dedizierte Umgebungen wie Adobe Flex ist wesentlich teurer: Bei kurzfristigen Aufgaben kann der Abschluss eines Creative-Cloud-Abonnements kostengünstiger sein.

Beim Erstellen von Geschäftsapplikationen sind auf Portabilität optimierte Toolchains ideal. Ein in NS Basic, Qt oder Xamarin gehaltenes Produkt lässt sich mit minimalem Aufwand auf alle wichtigen Plattformen portieren. Entwickler gewinnen so sowohl Reichweite als auch Marktbreite: Wer sowohl für Android als auch für iOS verfügbar ist, kann Word of Mouth besser ausnützen.

Branded Apps arten mit Qt, Xamarin und Co. in Arbeit aus: Wer stattdessen auf die App Machine setzt, kann sein Produkt in wesentlich kürzerer Zeit fertigstellen. Bei Spielen sieht die Lage ähnlich aus: Wer einmal einen Fehler in einem handgeschriebenen Shader gesucht hat, lernt die in C-More und Unity enthaltenen Bibliotheken lieben.

Zu guter Letzt: Die Beschäftigung mit alternativen Entwicklungsumgebungen lohnt sich in vielen Fällen auch dann, wenn man das Produkt nie zum Einsatz bringt. Aufgrund des programmierbar eidetischen Gedächtnisses bringt die Beschäftigung mit fachrelevanten Informationen Vorteile – wer eine neue Programmiersprache lernt, kann die Konzepte auch in seiner "Haus-IDE" anwenden.

Tam Hanna
befasst sich seit der Zeit des Palm IIIc mit Programmierung und Anwendung von Handheldcomputern. Er entwickelt Programme für diverse Plattformen, betreibt Onlinenews-Dienste zum Thema und steht für Fragen, Trainings und Vorträge gern zur Verfügung.

Microsofts Ankündigung, die nächste Version der eigenen Entwicklungsumgebung mit einem Android-Emulator ausliefern zu wollen, sorgte bei Marktbeobachtern für Verwirrung. Deswegen soll die noch in der Beta-Phase befindliche IDE außer Konkurrenz angesehen werden, um ihr Potenzial zu evaluieren.

Nach der Installation der IDE startet ein Assistent, der die mobilbezogenen Komponenten herunterlädt (s. Abb. 11).

Nach dem Start der IDE bietet Visual Studio 2015 in der Kategorie Visual C++ | Cross Platform vier Android-Projekte zur Auswahl an. Neben drei Bibliotheken lassen sich auch sogenannte Native-Activity Applications erstellen: Es handelt sich dabei um eine von Google als Entgegenkommen an Spieleentwickler eingeführte Spezial-Activity, die ihre Inhalte per OpenGL bezieht (und somit nicht ohne Weiteres auf den GUI-Stack zugreifen kann).

Für Entwickler bedeutet das, dass Kenntnisse in Sachen OpenGL zwingend nötig sind. Bei der Portierung von Spielen hilft, dass man als Entwickler nicht auf eine neue IDE umlernen muss. Wer kein Spiel erstellt, aber trotzdem mit .NET arbeiten möchte, ist mit Xamarin besser bedient.

Microsoft bietet einen Emulator an, der auf Basis von Hyper-V realisiert ist. Das ist immer dann von Vorteil, wenn ein unter Windows arbeitender Entwickler andere mit Hyper-V arbeitende Emulatoren benutzen möchte: Das permanente Ein- und Ausschalten der sich wechselseitig ausschließenden Virtualisierungstechniken kann so ersatzlos entfallen.

Die C#-Integration entpuppt sich bei näherem Hinsehen als Werbung für das an anderer Stelle beschriebene Xamarin. Wer ein entsprechendes Projektskelett erstellt, wird mit der in Abbildung 12 gezeigten Struktur konfrontiert.

Dieses Projektskelett enthält nur Werbung (Abb. 12).

Zu guter Letzt hat Microsoft die Webfähigkeiten von Visual Studio wesentlich erweitert. In den Rubriken JavaScript und TypeScript bietet Visual Studio 2015 je einen auf Cordova bezogenen Projekttyp an, der eine komplette Cross-Plattform-Applikation auf Basis des Frameworks erstellt.

Microsoft konnte mit den diversen Visual-Studio-Versionen für Webentwickler viel Erfahrung im Bereich IntelliSense sammeln. Dieses Know-how wird nun zur Verbesserung der Autovervollständigung in PhoneGap-Apps eingesetzt: Die Ergebnisse sind beeindruckend.

Die IDE unterscheidet sich von ihren Konkurrenten durch flexible Möglichkeiten zur Bearbeitung der Projektkonfiguration. So lässt sich config.xml mit einem grafischen Editor bearbeiten, der externe Plug-ins aus einem GitHub-Repository herunterlädt und direkt ins Projekt einbindet. Parameter wie das Programmsymbol oder die Mindest- und Maximalversion des zu verwendenden Android-SDKs lassen sich ebenfalls komfortabel über die grafische Oberfläche anpassen.

Microsoft bietet zwei Plug-ins an, die die Kommunikation mit einigen eigenen Services erleichtern sollen: Sowohl die Azure Mobile Services als auch Office 365 lassen sich direkt aus Cordova heraus ansprechen. Diese Features erleichtern das Erstellen von mit Microsoft-Services verbundenen Applikationen wesentlich.

Leider ist Visual Studio im Bereich der Plattformunterstützung arg eingeschränkt: Die diversen Konfigurationswerkzeuge gehen nur auf Android, iOS und Windows (Phone) 8 ein. Applikationen lassen sich nur unter Android 4.4 mit dem in Visual Studio integrierten Webdebugger testen – für frühere Versionen des Betriebssystems muss man auf den kostenpflichtigen jsHybugger zurückgreifen. Leider lässt sich Windows Phone 8.x überhaupt nicht debuggen.

Aufgrund diverser Einschränkungen wird sich die IDE also erst mal nicht gegen ihre Konkurrenten durchsetzen können. Es ist unwahrscheinlich, dass Microsoft jemals vollwertiges Tooling für Java-Apps anbietet: Das Unternehmen hat zu viel Interesse daran, seine .NET-Plattform zu promoten.

Die Cordova-Implementierung präsentiert sich trotz der ärgerlichen Einschränkung auf Windows, iOS und Android als manierlich. Wer mit der reduzierten Plattform- und Debugger-Unterstützung leben kann, findet schon jetzt ein produktives Werkzeug. (ane)