Android-App mit Python schreiben?

  • Guten Abend,


    da sich mein Anliegen nicht auf den Raspberry bezieht, ich aber gerne eure Meinung hören würde, erstelle ich das Thema hier im Off-Topic-Bereich.


    Ich bin in der Mittagspause über einen Artikel gestolpert, in dem steht das Python neben Java eine beliebte Programmiersprache zu der Entwicklung von Android-Apps ist.

    Mal abgesehen davon, das ich kein Adroid-Gerät habe und ich mir sicher bin, das ich noch weit davon entfernt bin auch nur an eine App-Entwicklung zu denken, interessiert mich das Ganze schon.


    Der ein oder andere hat vielleicht meine Python-Startversuche gesehen. Jetzt stellt sich mir die Frage was wäre denn notwendig um diesen Code als App auf einem Android-Gerät auszuführen?

    Ich erwarte jetzt hier keine Hilfestellung um den Code umzuschreiben, wie gesagt dass ist nicht das Ziel.

    Mich interessieren eher im Allgemeinen, was den nötig wäre um daraus eine App zu machen?


    Habe schon etwas über "kivy" gefunden, wahrscheinlich anstelle von "tkinter" dann?

    Im Internet wird auf so Fragen immer wieder auf Java verwiesen, deswegen wollte ich euch erfahrene Programmierer/Softwareentwickler mal speziell nach Python fragen:thumbup:


    Eventuell schreibt von euch sogar eine Apps mit Python?


    Danke schon ein mal und ich freue mich auf interessante Beiträge :)


    Grüße Dennis

    🎵🎸Die Nordsee schlägt dir ins Gesicht, trotzdem hast du verloren, du bist nicht weit gekommen, du läufst weiter nach vorn 🎵🎸

  • Ich bin in der Mittagspause über einen Artikel gestolpert, in dem steht das Python neben Java eine beliebte Programmiersprache zu der Entwicklung von Android-Apps ist.

    Halte ich für Blödsinn. Möglich? Definitiv, z.B. via dem von dir genannten Kivy. Beliebt? Python ja, aber für Android nein. Da nimmt man in der Regel:

    Das für Python verfügbare Android-Tooling ist halt relativ gering und nicht von Google.


    Um die eigentliche Frage zu beantworten: fang z.B. mal hier an. https://python-for-android.readthedocs.io/en/latest/


    Quote

    python-for-android is an open source build tool to let you package Python code into standalone android APKs. These can be passed around, installed, or uploaded to marketplaces such as the Play Store just like any other Android app. This tool was originally developed for the Kivy cross-platform graphical framework, but now supports multiple bootstraps and can be easily extended to package other types of Python apps for Android.


    python-for-android supports two major operations; first, it can compile the Python interpreter, its dependencies, backend libraries and python code for Android devices. This stage is fully customisable: you can install as many or few components as you like. The result is a standalone Android project which can be used to generate any number of different APKs, even with different names, icons, Python code etc. The second function of python-for-android is to provide a simple interface to these distributions, to generate from such a project a Python APK with build parameters and Python code to taste.


    Wenn es dir einfach nur darum geht, Python-Code auf einem Android-Gerät auszuführen (und du keine eigenstehende App brauchst): https://termux.com/.

  • Linus vielenDank für deine sehr ausführliche Antwort. :)


    Da habe ich jetzt Lesestoff für die nächsten Mittagspausen ^^:thumbup:


    Grüße Dennis

    🎵🎸Die Nordsee schlägt dir ins Gesicht, trotzdem hast du verloren, du bist nicht weit gekommen, du läufst weiter nach vorn 🎵🎸

  • Hallo,

    BeeWare



    Habe mir mal das Tutorial angeschaut und was ich auch interessant finde, ist das einfache vorgehen um die Python-Programme auch als "standalone" für Windows/Mac/Linux verfügbar zu machen.


    Das ist ein Thema das eventuell in Zukunft auf mich zu kommen könnte.


    Ist ein Vorteil von BeeWare oder ist das immer so "einfach"?


    Habe schon ein Beispielprogramm hier unter Fedora mit "pyinstaller -w Beispielprogramm.pyw erstellt.

    Unter Windows tue ich mir da aber deutlich schwerer, google schon ziemlich lang, wie ich so ein Programm unter Windows ausführen kann ohne Python zu installieren.

    Edit: Gefunden und funktioniert :bravo2:


    Grüße und Danke

    Dennis

    🎵🎸Die Nordsee schlägt dir ins Gesicht, trotzdem hast du verloren, du bist nicht weit gekommen, du läufst weiter nach vorn 🎵🎸

    Edited once, last by Dennis89 ().

  • Manch einer verdient auch sein Geld mit Android Apps in C# ;)


    Letztendlich erzeugen die kompilierenden Sprachen ja einen Code, den der Prozessor ausführen kann (also wenn es für den richtigen Prozessor kompiliert wurde).

    Am Ende des Tages benötigt es eigentlich "nur noch" eine Schicht zwischen der Betriebssystem-API und deinem Bytecode.


    Dies geschieht bspw. bei Unity3D oder Xamarin indem der kompilierte Code in einer speziellen Mono-Runtime läuft, die diese Schnittstelle zum Betriebssystem darstellt.


    Ob und wie sich soetwas für Python entwickeln wird, mag ich aber nicht bewerten. Letzten Endes ist Python eine mächtige Sprache mit starker Community - aber am Ende wird es wohl oder übel an der Lust und Unlust einer kleinen Anzahl hypermotivierter Entwickler hängen, ob sowas jemals rauskommt ;)

    .NET-, Unity3D-, Web-Dev.
    Mikrocomputer-Hobbyist.

  • Danke Renão für deinen Beitrag.


    Bin gespannt wie weit Python in Zukunft für Apps in Android und IOS genutzt wird.


    Bei Neuigkeiten oder sonstigen Anregungen zu dem Thema darf das hier gerne genutzt werden:)


    Grüße

    Dennis

    🎵🎸Die Nordsee schlägt dir ins Gesicht, trotzdem hast du verloren, du bist nicht weit gekommen, du läufst weiter nach vorn 🎵🎸

  • iOS = Apple = zukünftig mit ARM CPU = höhere Kompatibilität zu erwarten


    (wobei meine Aussage darauf fußt, dass du sagst was in Zukunft zu erwarten ist. Daher nehme ich an das dies derzeit nicht so gegeben ist)!

  • Apple ist jetzt schon mit ARM CPU, auf allen mobilen Geräten. Und da spielt Python quasi keine Rolle. Und das wird sich auch auch nicht ändern. Zum einen ist Python auf diesen trotzdem resourcen-beschränkten Systemen zu langsam. Weil es viel Speicher braucht und damit die caches und insgesamt das System belastet. Weil es ineffizient ist, und damit die CPU länger laufen muss, und mehr Strom verbraucht. Vor allem aber, weil das tooling nicht da ist. Es wird nicht offiziell von Apple unterstützt für iOS. Und das ist der mit Abstand größte Hemmschuh.


    Ich mag Python. Mache das schon 22 Jahre. Und es ist unfassbar, wie die Sprache in dieser Zeit gewachsen ist. Aber es ist nicht die Sprache für mobile Entwicklung, und der move von Apple zu ARM für den Desktop ändert das nicht.

  • Und zum Thema Bytecode/VMs: da ist auch nicht alles über einen Kamm zu scheren. Die Java und .NET VMs sind deutlich lower levelig als Python. Für die meisten Instruktionen gilt darum das sie sich recht gut in die Maschinensprache des nativen Prozessors übertragen lassen - nennt man JIT. Siehe https://en.wikipedia.org/wiki/List_of_CIL_instructions - das ist fast schon assembler.


    Demgegenüber sind die python Instruktionen wenige, aber mächtiger: https://docs.python.org/2.4/lib/bytecodes.html - nur steht hinter vielen zb eine dynamische Implementierung eines Index-Zugriffs, etc.


    In der Summe ist eine bytecode-basierte Optimierung von Python daher aussichtslos. Es gab den Versuch: https://de.wikipedia.org/wiki/Parrot - da war viel Musik dein, aber faktisch hat sich das nie manifestiert und kann als gescheitert betrachtet werden.


    Es gibt JIT für Python, auch bekannt als PyPy. Das hat mir auf dem Pi auch schon mal den arsch gerettet. Es ist aber auch ein sehr anderer Ansatz, der im Grunde losgelöst ist von der unterliegenden VM. Und auch wenn das beeindruckend ist: es baucht Unmengen Speicher und wird aufgrund dynamischer code Generierung die wesentlich weniger gut verstanden ist niemals den Weg auf iOS schaffen.

  • Es geht vor allem um das Prinzip, und das ist unverändert: die meisten aller Operationen werden im Grunde über call function abgebildet, und dahinter kann ALLES stehen. Das ist toll für die flexible Semantik von Python, aber eben ganz besch...eiden zu optimieren.

  • Ich würde Python nicht einsetzen um Apps zu entwickeln...


    Ich habe angefangen mit Kivy und muss ehrlich gestehen, dass die meisten GUI’s recht Hässlich aussahen. BeeWare hatte ich mir auch mal angeschaut, jedoch habe ich dort schnell aufgegeben, weil ich dazu keinen geeigneten Start gefunden habe und persönlich bin ich damit nicht warm geworden.


    Nativer Code ist nunmal die beste Möglichkeit zu entwickeln, vor allem weil es deutlich schneller ist. Jedoch würde ich, wenn ich eine App von Grund auf entwickeln würde wahrscheinlich auf Flutter setzen, weil die Performance wirklich gut ist und es mittlerweile auch als Web,Mac,Win,ios und Android lauffähig ist.


    Diese Flexibilität bieten kaum andere Cross-Plattform Lösungen. Jedoch ist Flutter für Anfänger nicht trivial und ich habe auch noch _kaum_ Erfahrung und würde jemanden der noch nicht programmieren kann zunächst davon abraten mit Flutter zu starten und als erstes Dart zu lernen.


    :2cents:

    Wenn's brennt 112 hilft weiter!

    Edited once, last by raspbastler ().

  • Ich habe angefangen mit Kivy und muss ehrlich gestehen, dass die meisten GUI’s recht Hässlich aussahen.

    Für mobile apps würde ich da auch eher zu kivymd raten. Das sieht eigentlich aus wie jede mehr oder weniger moderne App Oberfläche.

    Laut der Dokumentation ist Buildozer das Mittel der Wahl für mobile Apps mit Kivy. Ausprobiert habe ich es aber noch nie.