Python auf Android? BeeWare will mobile App-Entwicklung mit CPython ermöglichen

Mobile Apps mit Python zu entwickeln ist ein Wunschziel der Python Foundation – ein Toolkit für Android soll nun rascher Fortschritte machen.

In Pocket speichern vorlesen Druckansicht 18 Kommentare lesen
Python auf Android? BeeWare will mobile App-Entwicklung mit CPython ermöglichen

(Bild: Arthur_Shevtsov/Shutterstock.com)

Lesezeit: 4 Min.
Von
  • Silke Hahn
Inhaltsverzeichnis

Python auch auf Android frisches Leben einzuhauchen, ist das vorrangige Ziel von BeeWare. Das Projekt unterstützt Python-Entwickler dabei, von einer einzigen Codebasis aus Anwendungen für iOS, Android, Windows, MacOS, tvOS, Linux und andere Plattformen zu veröffentlichen, die native UI-Widgets nutzen. Mit einem besonderen Fokus auf mobile Plattformen hat das BeeWare-Team zunächst die Arbeiten für iOS vorangetrieben und den Support auf Python 3.8 ausgebaut. Im nächsten Schritt soll Android aufschließen – mit Unterstützung durch die Python Software Foundation (PSF).

Im Rahmen des diesjährigen Python Language Summit hatte Russell Keith-Magee, Gründer des BeeWare-Projekts, mitgeteilt, das Team stehe kurz davor, einen vollständigen Satz von BeeWare-Tools fertigzustellen, die auf Android laufen können. Der in der Vergangenheit notwendige Umweg über Java-Bytecode soll künftig für Python-Anwendungen auch auf Android obsolet werden, nachdem die PSF dem Projekt im Herbst 2019 eine finanzielle Förderung gewährt hatte, um die Unterstützung für Android auf die gleiche Stufe wie bei iOS zu heben. Daraufhin konnte BeeWare Asheesh Laroia im Dezember 2019 die Verantwortung für die Portierung von CPython auf Android übertragen. Ende Februar 2020 vermeldete BeeWare dann bereits die Vorschau einer rein in Python programmierten Android-App und präsentierte den Prototypen in einem Video ("Python on Android: It's alive!").

Mehr Infos

Die erste von heise Developer, iX und dpunkt.verlag organisierte virtuelle Konferenz enterPy online am 26. Mai vermittelt einen kompakten Überblick zum Einsatz von Python in Businessanwendungen in den Bereichen Web-Entwicklung, Data Science und DevOps.

Unter Python-Entwicklern ist die Tauglichkeit der Programmiersprache für die Entwicklung mobiler Apps nach wie vor umstritten: In einer kürzlich veröffentlichten Studie der PSF zum bevorzugten Einsatz der Programmiersprache zählt das Entwickeln mobiler Anwendungen zu den Schlusslichtern. Nur bei der Spieleentwicklung und Multimedia-Anwendungen kommt Python ähnlich selten zum Einsatz (Knapp 6 Prozent der Befragten gaben an, Python in der mobilen Entwicklung einzusetzen). Das Hauptproblem dabei dürfte die Distributionsgröße sein, da die Python-Apps für jede Mobile-Plattform eine individuelle Runtime in das Bundle packen müssen. Die Laufzeitumgebung für Python müsse daher stark schrumpfen.

Vorschläge dazu sehen eine "Minimalversion" oder ein sogenanntes Kernel Python vor, das zunächst auf die Standard-Library verzichtet, es Entwicklern aber erlaubt, bei Bedarf stdlib-Module über PyPI nachzuladen. Keith-Magee schlägt zudem ein cross-kompilierendes pip vor, das direkt Pakete für die Zielplattform installiert. Das Konzept eines reduzierten "kernel-only"-Python verfolgen neben BeeWare auch die Projekte MicroPython, Embedded Python und Kivy – bisher offenbar aber noch weitgehend unabhängig voneinander.

Mobile Plattformen wie iOS oder Android stellen klassische Python-Entwickler vor besondere Herausforderungen. Die von Unix vertrauten Subprozesse fehlen vollständig, Sockets, Pipes und Signals verhalten sich anders, zahlreiche Syscalls sind ausgeschlossen. Auch der Umgang mit TLS-Zertifikaten ist unter Android knifflig. Für eine erfolgreiche Mobile-App-Entwicklung muss die CPython-Testsuite derzeit noch zahlreiche Tests überspringen, die Fork oder Spawn verwenden beziehungsweise Signale oder andere APIs verwenden, die anders sind oder fehlen.

Von solchen Hürden wollen sich Keith-Magee und Mitstreiter aber nicht abschrecken lassen. Nachdem er bereits 2015 einen "Monster-Patch" zum iOS-Support für CPython geschrieben hatte und seither einen Fork für iOS-Patches zu den Python-Versionen 3.5 bis 3.8 pflegt, zeigt er sich zuversichtlich, auch für Android eine Entwicklungsreife erreicht zu haben, die einen Merge der Änderungen in CPython sinnvoll erscheinen lasse.

Während Python-Schöpfer Guido van Rossum und andere grundsätzlich den Ausbau von Python für die Mobile-App-Entwicklung unterstützen, fehlt es den Community-Bemühungen an der ebenfalls notwendigen finanziellen Förderung. "Mobile-Python" steckt im Henne-Ei-Problem fest: Solange die Sprache mobile Plattformen nicht umfassend genug unterstützt, finden sich keine Unternehmen, die in die Mobile-Entwicklung investieren wollen. Daher bleibt zumindest vorläufig die PSF der einzige ernsthafte Sponsor des Projekts.

Mehr Informationen lassen sich dem Blogeintrag der Python Software Foundation entnehmen. Weitere Informationen zu BeeWare finden sich auf der Projekt-Homepage, wo es unter anderem eine Einführung und Anleitungen für den Einsatz des Toolkits gibt. Den Stand der Entwicklung können Interessierte auch auf dem GitHub-Space "Python-Android-Support" verfolgen. (sih)