Android-6-Anwendung programmieren

Hier werden alle anderen GUI-Toolkits sowie Spezial-Toolkits wie Spiele-Engines behandelt.
Antworten
Benutzeravatar
Goswin
User
Beiträge: 361
Registriert: Freitag 8. Dezember 2006, 11:47
Wohnort: Ulm-Böfingen

Donnerstag 2. Februar 2017, 23:25

Hoffentlich bin ich hier im richtigen Teilforum.

Ich habe ein Linux Mint Betriebssystem und möchte eine Anwendung für mein neues Tablet unter Android_6 programmieren. Ich habe null Ahnung von Android-Geräten und welche Tools für so etwas üblicherweise benutzt werden; muss mich also in einem ersten Schritt für eins oder mehrere davon entscheiden. Ein Prototyp der Anwendung ist mit python3 & tkinter programmiert und läuft momentan zufriedenstellend auf meinem Rechner, aber ich gehe davon aus, dass ich das alles neu programmieren muss.

Eine Google-Suche führte mich zu Software wie "Kivy" (nicht in der Distribution) und "Pygame" (in der Distribution vorhanden), für mich absolut exotische Namen. Vielleicht gibt es auch noch andere? Aber ich habe nicht einmal den Unterschied zwischen den beiden obigen verstanden, weiß nicht ob beide für meine Absicht überhaupt taugen, wenn ja, welche die bessere ist, ob es schwer ist etwas zu installieren das nicht in der Distribution ist, und so weiter. Als Programmierumgebung hatte ich bisher immer nur gvim, genügt das?

Es tut mir leid, dass ich keine sehr konkrete Frage stellen kann, aber ich brauche eine allgemeine Orientierung in den erwähnten Dingen, und jeder gute Rat sollte mich vermutlich weiterbringen.
BlackJack

Freitag 3. Februar 2017, 00:32

@Goswin: Üblicherweise programmiert man Android-Anwendungen in Java, weil das die ”native” Sprache ist. C++ geht auch, dann muss man aber gegebenfalls für verschiedene Zielsysteme/Prozessoren übersetzen. Eben für alle die man unterstützen möchte.

Was auch noch geht sind lokale ”Webanwendungen”, also HTML5, CSS, und JavaScript, wofür es dann Werkzeuge gibt um das in einen Webview angezeigt in ein Android-Package zu stecken und auch JavaScript-Bibliotheken um die APIs des Geräts anzusprechen.

Kivy ist ein GUI-Rahmenwerk, also mit Schaltflächen, Eingabefeldern, Checkboxen, und so weiter. Pygame ist wesentlich tiefer angesetzt und bietet so etwas alles nicht. Das ist also eher nur für Spiele oder andere Anwendugen wo man wirklich alles selber machen möchte, hauptsächlich aus Grafikdateien. Der Android-Port von Pygame hatte zumindest als ich mir dass das letzte mal angeschaut hatte, auch nicht den vollen Modulumfang vom regulären Pygame.

Ich persönlich würde hier nicht den Umweg über Python gehen, und wenn schon nicht Java, dann eher JavaScript. Kommt aber immer darauf an was man genau vorhat.
Benutzeravatar
Goswin
User
Beiträge: 361
Registriert: Freitag 8. Dezember 2006, 11:47
Wohnort: Ulm-Böfingen

Freitag 3. Februar 2017, 17:41

Eine serverbasierte Webanwendung habe ich nicht im Sinn, die Software soll herunterladbar sein und grundsätzlich offline benutzt werden (wäre auch sonst zu langsam). Da es mir vorerst einmal darum geht, mich in Android-6 einzuarbeiten (und weil es immer gut ist, etwas halbwegs Funktionierendes vorzeigen zu können), habe ich anhand von BlackJacks Info den Eindruck, dass ich am besten in zwei Etappen vorgehe: (1) einen zweiten Prototyp mit Kivy bauen und (2) die endgültige Anwendung mit Java (Javascript kenne ich nicht). Dazu habe ich jetzt einige Zusatzfragen:

(1) Ist Kivy (welches ja nicht in der Distribution ist) unter Linux Mint leicht zu installieren?
(2) Ist Kivy genau so mächtig wie tkinter oder eingeschränkter?

Wenn ich die Anwendung dann in Java baue, muss ich mich ja wiederum für ein GUI-Tool entscheiden (Swing?), da es ja verschiedene gibt und ich keins davon bisher genutzt habe.

(3) Welche GUI-Tools von Java sind Android-kompatibel?
(4) Wann ist ein Tool "native" und wichtiger: was für Vorteile bringt es, eine "natives" Tool zu benutzen?
__deets__
User
Beiträge: 2841
Registriert: Mittwoch 14. Oktober 2015, 14:29

Freitag 3. Februar 2017, 17:52

Java GUI Programmierung hat nichts mit Android zu tun. Das liefert sein komplett eigenes Toolkit. Lad dir ein Android SDK runter, und mach eine Beispielanwendung, da gibt's Tutorials zu hauf.


Und genauso wenig ist es sinnvoll, Kivy & Tkinter zu vergleichen. Android und Kivy sind zur Erstellung von Touch-UIs gedacht. Diese folgen anderen Paradigmen, und kennen zB Animationen und multi-touch. Kann Tkinter alles nicht.
Benutzeravatar
Goswin
User
Beiträge: 361
Registriert: Freitag 8. Dezember 2006, 11:47
Wohnort: Ulm-Böfingen

Freitag 3. Februar 2017, 18:14

@__deets__:
OK, jetzt bin ich schon mal schlauer. Aber für Android gibt es ja auch zwei Toolkits, zwischen denen ich wählen müsste:

(1)_Android SDK mit Eclipse (soll veraltet sein, oder?), und
(2)_Android Studio.

Und: Ist die GUI von Kivy so ähnlich wie diese beiden oder anders bzw eingeschränkter?
BlackJack

Freitag 3. Februar 2017, 18:25

@Goswin: Serverbasierte Webanwendung hatte ich da auch gar nicht im Auge. HTML5 erlaubt ja, dass man eine Manifest-Datei angeben kann, wo alle benötigten Ressourcen gelistet sind, damit der Browser weiss was er cachen muss, und lokal in eine Datenbank speichern kann man auch. Solche Anwendungen lassen sich dann auch offline nutzen. Erst recht wenn man sie als Android-Paket verpackt wo alles drin ist und der ”Browser” ein Webview im Vollbildschirm ist, also ohne URL-Zeile und die Browser-UI.

Ad (2): Ich würde sagen Kivy ist moderner. Und deutlich besser auf Geräte mit Touchscreen ausgelegt.

Ad (3): Android hat seine eigenen GUI-Komponenten und ein Android-JDK zum Entwickeln von Anwendungen in Java. Da gibt es auch einen Emulator um das auf dem PC zu testen. Android-Java-Anwendungen kann man sonst nicht woanders als auf Android laufen lassen.

Ad (4): Native hatte ich für Java in Anführungszeichen gesetzt weil das tatsächliche Native Development Kit (NDK) für Android C++ ist, aber die meisten Anwendungen die nicht zwingend C++ benötigen sind in Java geschrieben weil auf jedem Android-Gerät eine JVM verfügbar ist. Das ist halt die Programmiersprache die einem von Google als erstes für Android-Programme vorgeschlagen wird und die dann auch auf jedem Android, egal welche Hardwareplattform, laufen sollten.

Es sind eher die Nachteile die gegen andere Sprachen sprechen: Wenn man dafür etwas für einen Prozessor kompilieren muss, und sei es die Laufzeitumgebung der Sprache, dann muss man pro unterstützter Hardwareplattform ein Paket erstellen. Damit schränkt man a) die Geräte ein auf denen etwas läuft, und b) kann sich jede Indirektion (zusätzlicher Interpreter) in der Geschwindigkeit bemerkbar machen, wenn man nicht gerade nur das obere Ende der Geräte im Auge hat.
Benutzeravatar
Goswin
User
Beiträge: 361
Registriert: Freitag 8. Dezember 2006, 11:47
Wohnort: Ulm-Böfingen

Freitag 3. Februar 2017, 19:32

Greift Kivy nun auf die GUI-Komponenten vom Android-JDK zu oder hat er seine eigenen GUI-Komponenten? In anderen Worten: muss ich mit meiner 2-Schritt-Strategie zwei Widget-Sets nutzen lernen oder ist es ein und derselbe? Sieht das Ergebnis am Ende genauso aus?
__deets__
User
Beiträge: 2841
Registriert: Mittwoch 14. Oktober 2015, 14:29

Freitag 3. Februar 2017, 20:18

Kivy ist seine eigene Welt. Wenn du schlussendlich planst, doch auf Java zu setzen, wuerde ich gleich damit anfangen.
BlackJack

Freitag 3. Februar 2017, 20:19

@Goswin: Kivy zeichnet alles selber.
Antworten