Die letzten Tage habe ich mich damit beschäftigt Werkzeuge auszuprobieren, mit denen man "native" oder zumindest "semi-native" Anwendungen für android (oder gar iOS) bauen kann.
Kandidaten waren:
1.) Android Studio mit kotlin
2.) Flutter mit Dart
3.) kivy 'mit' Python
4.) apache cordova (HTML5, CSS, Javascript....)
...schon ein reichhaltiges Programm..
Und, was kam heraus?
In der Kürze der Zeit (ca. 1 Woche) kann ich noch nicht sagen, welche Werkzeuge mir am meisten liegen. Meine ersten Eindrücke:
Ein generelles Problem (mindestens für mich) ist eine funktionierende (Entwiklungs -)Umgebung zu schaffen. Alle weisen einen Gewissen Installationsaufwand auf. Kurz: Mehr Administration als Programmierung...
Ob das Kind nun Javascript, Kotlin, Dart oder Python heißt spielt eigentlich die geringste Geige. Das Hin und Her zwischen den Sprachen macht in der Kurzen Zeit zwar Kopfschmerzen - aber es gibt nichts, was mit einem Blick in die Dokumentation nicht zu lösen wäre...
+) Android Studio ist ein Meisterwerk, das ich wohl mehr zu schätzen wüsste, hätte ich es nicht auf dem Laptop installiert hätte - mein Fehler. Konzept ist gut Projektaufbau... macht Sinn...Vom Grundsatz her, ist die Verwaltung von emulierten Geräten (Hauptsache Google Pixel Geräte, es sei ihnen gegönnt) gut gedacht - und wird von den anderen "Konstellationen idR mitgenutzt. (Nachtrag: erfolgreich war es jedoch mein physisches Tablet zum Testen herzunehmen)
Probleme:
- )Auf meinem Laptop (zwar i7 mit 24 GB RAM - aber 14") kaum zu verwenden. Menues erscheinen ohne Text, Symbolleistern rund um den Bildschirm, die emulierten Geräte verdecken 30% des Bildschirms, man braucht ständig ein Terminal und ein Code-Fenster wäre auch nicht schlecht... Also min. 24 Zoll...
+) Flutter: Konzept auch sehr durchdacht... mit Schwächen in der Praxis. Nutzt allerdings in der Praxis auc die Emulierten Geräte die Android Studio bereitstellt. Im Grunde ist Flutter ein Kommando-Zeilen Tool, das inm Zusammenwirken von einer IDE wie VSC & anddroid Studio Meisterwerke Vollbringt, solange Android SDK und "Schieß mich tot" die selbe XML Version verstehen...
Probleme:
- Die Installation muss man erst einmal so weit bringen, bis tatsächlich ein build möglich wird.
- Mit Android Studio muss man sich auch auseinandersetzen.
+) Python und kivy sind (kivy ist ein Modul) sind, wenn man eh Erfahrung mit Python hat natürlich zunächst eine angenehme Wahl. Ales sehr "schlangenmäßig" also ohne große Überraschungen. Dokumentation, so wie auch bei der Konkurrenz , "so lala...Im Prinzip kommt man (ich) am schnellsten zu einer - grundsätzlich - funktionierenden Anwendung.
Probleme:
- Die GUI in den .kv Dateien und der Pythoncode (Logik) sind nur so "semi" getrennt (man muss aus Python heraus oft "manipulieren"
- Das Ergebnis in der UI ist "akzeptabel" - sieht aber nicht wirklich so aus, wie es heute von einer "App" erwartet wird.
- Das größte Manko, selbst für den Python Liebhaber, der build-Prozess und das Debugging auf dem Endgerät...Der notwendige "buildozer" läuft eh nur unter Linux. Ich habe es bisher nur mit VM versucht...habe mich mit Windows Hyper-V zugegeben etwas angestellt (zu kleine Partition zugewiesen). Aber buildozer holt Gott und die Welt als Download auf den Rechner - für das kleinste Projekt - und hat so meine 'ubuntu' VM gekillt (Platte voll). Dann habe ich mal, weil ich es eh mal ansehen wollte, Linux Mint installiert. Würde ich einen Rechner für meine Hausaufgaben und Büro-Gedönse brauchen👍 wirklich chick... Mit der installation von VSC hatte ich schon die ersten Schwierigkeiten. Deshalb : build vertagt
+)Apache Cordova Android. So Semi Native -code für die Platformen. Eher so eine Art Wrapper zwishen einer "klassischen Wabanwendung" und der eigentlichen Umgebung. So wie ich das verstehe, ehemals ein Adobe Kind, jetzt unter apache Lizens unterwegs. Eigentlich ganz guter Ansatz. Habe aber keine Idee, wie der Marktanteil in 3 Jahren aussieht. Als im kern eine Webanwendung mit HTML5, CSS und Javascript natürlich von der Anwendung her einer der einfachsten Kandidaten.
Probleme:
- Auch "Cordova" ist im Grunde ein Kommandozeilen-Tool, das um seine Pracht zu entfalten einiges an Drittprodukten, mit entsprechenden Erweiterungen benötigt. Zunächst VSC (im "normalen" Visual-Studio gab es mal eine Projektunterstützung, das letzte 'update', welches ich gefunden habe stammt aus 2016. Glaube nicht, dass das.... Auf jeden Fall benötigt man für das Build "Gradle" - welches aber z.B mit meinem JDK 22 nicht zufrieden war, weshalb ich zurück auf jdk-17 musste... Hab schon lange nicht mehr so viele Systempfade von Hand "umgebogen" wie in den letzten Tagen.
Zwischenfazit
Bei der Beschäftigung mit "apache cordova" ist mir eine Sache aufgefallen: Auch mit einer "stink normalen Webanwendung" komme ich an die von mir gewünschten Positionsdaten eines Handys ...
Dazu muss man wissen: Ich bin ein alterMann. Als ich jung und schön war, da war Javascript so ein "Bling,Bling" Ding, das 60% aller Browser deaktiviert hatten. Dann kam viel "Moo Tools", "Jquery" etc. Feine Sache - aber mehr "Look and feel".. mit Ajax-Funktionalität...
navigator.geolocation.getCurrentPosition(
function(position){
if (position.coords.latitude!== null){
document.getElementById('tdlat').innerHTML = position.coords.latitude;
document.getElementById('tdlon').innerHTML = position.coords.longitude;
document.getElementById('tdalt').innerHTML = position.coords.altitude+'m';
document.getElementById('tdacc').innerHTML = position.coords.accuracy+'m';
};
},
function(){
// wenn Positionsbestimmung Fehler ergab (auch weil Sie vom User abgelehnt wird).
document.getElementById('links').innerHTML ='Die Position konnte nicht ermittelt werden';
}
Aber das 2024 so etwas im Grund den gesamten Job macht?? Eine wiederholtes http-Request alle 30 sec... echt kein Thema
Brauche ich überhaut eine android oder iOS Anwendung? Ich komme ja auch so auf die Gerätedaten, die ich brauche!