- Details
- Geschrieben von: admin
- Kategorie: Uncategorised
- Zugriffe: 445
- Details
- Geschrieben von: admin
- Kategorie: Uncategorised
- Zugriffe: 260
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!
- Details
- Geschrieben von: admin
- Kategorie: Uncategorised
- Zugriffe: 222
Gestern und heute habe ich mir die Zeit damit vertrieben meine kleine App für's Handy zu basteln ... soweit das eben erstmal mit kivy geht, da mir python halt wesentlich näher liegt als kotlin oder Dart.. Soweit , soweit so gut, verbindet sich alle 30s mit dem Server und übermittelt POST Request mit Gerätenummer , GPS-Mock Daten als jason verkleidetes Dictionary. Problem:
Will man auf's Handy, ist irgendwann die Zeit gekommen Windows mit seinem Krempel zu verlassen...
Mein erster Plan war es dafür Ubuntu auf einem i5 mit 16 GB zu installieren, auf dem ich eigentlich nur youtube zum Frühstück schaue... aber dann ist mir der Letzte USB-Stick beim versuch ein da ein bootfähiges iso von ubuntu zu erstellen irgendwie unter der Hand weggestorben..
Naja. Eine VM auf dem Notebook ist eh bequemer ... Hyper-V ausgegraben aus den untiefen von Windows 10 , aktiviert , VM angelegt im Schnellverfahren... läuft.
Einige Zeit verbracht, bis ich realisiert habe, dass python -m venv env hier etwas anders bedeutet wie python -m venv env ... Hier will die Umgebung nämlich unter enf\bin aktiviert werden und nicht unter env\Scripts (mal so nebenbei: Wer hat sich eigentlich ausgedacht Scripts groß zu schreiben? Der Kumpel von dem, der den Keybord Interrupt auf Kommandozeile genauso wie das kopieren in Fenstern auf ctrl+c gelegt hat?)
Egal.
Nachdem ich unter Windows extra eine 'alte' Python3.10 Version in die Umgebung hohlen musste weil sonst das modul kivy nicht wollte - war es gar nicht so schlimm, dass bei ubuntu noch eine ältere Schlange hauste (3.8). Soweit lief die keine App auch - man glaubt es kaum - fast auf anhieb.
Zeit eine auf android lauffähige Version zu erstellen . Das geht mit dem buildozer - aber nicht unter Windows /Ich rufe den Diskriminierungsbeauftragten an - daher überhaupt der Umzug.)
Also erstmal allen möglichen Kram installiert (buildozer und ich sind jetzt sudo🤙) noch mal cython ind die Umgebung genagelt und los geht's.
buildozer init
spec-Datei angepasst und der große Moment kann kommen
buildozer -v android debug
Es läuft bei mir ... und läuft... läuft... läuft ??! Nach gefühlten 100 Downloads dann meine Meldung...
Irgendwas mit Fehler beim schreiben und "discspace"...
Was war passiert?
Bei der Einrichtung hatte ich der VM statt 120 GB nur 12 GB zugestanden. Die waren nun voll....
So schnell gebe ich nicht auf... VM angehlten , zum Hyper-V Manager geeilt, Festplatte vergrößert.. Ergebnis:
Nach der Anmeldung ein türkiser Bildschirm (vom Remotezugang) - von dem ich nicht mal einen Screenshot machen kann aus... Gründen.
Was mag mein neuer Chat-GPT Freund, der sich so auskennt, dazu sagen?
Zitat:
Das kann frustrierend sein😌. Manchmal lohnt es sich eine..kleine..Pause zu machen!
- Details
- Geschrieben von: admin
- Kategorie: Uncategorised
- Zugriffe: 215
So... da wären wir wieder. Ich habe die alte Maria (10.4...) auf Maria 11. schieß mich tot, upgegradet(?)... egal, Django hat seinen Willen und unterstützt nun auch zwei Datenbaken ... Dann hat er mich noch etwas gefoppt, mit der seltsamen Art, wie er einen "static" Ordner sucht (den Ort, wo für eine App Bilder, css-Dateien und Skripts sucht....Das ist schon etwas "nerdig" :
Zunächst gibt es dazu Einträge in der berühmten settings.py. Das ist mehr oder weniger so etwas wie eine Konfigurationsdatei in Skriptform. Dann gibt es typischerweise gleich zwei 'static' - Ordner, einer in dem Projektordner (quasi mit 'globalen' statischen Dateien), da könnte man darauf kommen, Der andere im "App" Verzeichnis (Dieses "App" und "Projekt" Ding Bei Django ist auch etwas gewöhnungsbedürftig) ...
Richtig überraschend finde ich die den Aufbau des App - Static ordners...
\django\Projekt\app1\static\app1\css
\django\Projekt\app1\static\app1\img
\django\Projekt\app1\static\app1\css
Welchem mythologisch begründetem Zweck dient bitte der , identisch mit der App benannte Ordner unterhalb des Ordners static - und nein, mit dem Projet hat das nichts zu tun - der Projektweite Static-Ordner liegt außerhalb unter Projekt! Doppelgemoppelt?
Naja egal . Das soll hier kein Tutorial werden - da empfehle ich die jeweils aktuelle Dokumentation...
Hat man sich an seine "Spleens" gewöhnt arbeitet Django sehr ähnlich wie Flask ein gutes Werkzeug - mit im Vergleich etwas mehr Gewicht und eben Speck auf den Rippen...
Das Rendern der Templates funktioniert sehr änlich wie bei Flask (obwohl hier nicht Jinja2 die Template-Engine gibt, wie man denken könnte). Das sieht z.B. so aus:
{% load static %}
...
<link rel="stylesheet" href="/{% static 'app1/css/app01.css' %}">
...
<h1>{{message}}</h1>
<table>
{% for key, value in data.items %}
<tr><a class='mya' src='{{ key }}'> {{ value | safe }}</a></tr>
{% endfor %}
</table>
data ist hier wieder ein Dictionary ... und so sieht das dann aus:
Das dazugehörige Template sieht als html-Datei im Browser geöffnet so aus:
- Details
- Geschrieben von: admin
- Kategorie: Uncategorised
- Zugriffe: 721
Schon seit einigen Tagen habe ich das starke Bedürfnis meine lokale Spielwiese auf Linux umziehen zu lassen....
Ich habe ier noch einen älteren i5 mit 16 GB RAM , der gerade dem Raspberry seinen Monitor und seine Maus leihen muss...Ansonsten hält er ein paar Datensicherungen vor und zeigt mir zum Frühstück youtube- Videos...
Ich denke es ist Zeit dem ei zweites - Linux -Leben einzuhauchen.
Grund: Sowohl der Raspberry , als auch der Webserver (auf dem diese Webseite liegt) gehören klar in die Linux welt