6. Python unter Android verwenden

Python unter Android unterscheidet sich von Python auf Desktop-Plattformen. Auf einer Desktop-Plattform wird Python üblicherweise als Systemressource installiert, die jeder Benutzer dieses Rechners verwenden kann. Die Benutzer arbeiten dann mit Python, indem sie eine ausführbare Datei python starten und Befehle an einer interaktiven Eingabeaufforderung eingeben, oder indem sie ein Python-Skript ausführen.

Unter Android gibt es kein Konzept der Installation als Systemressource. Die einzige Verteilungseinheit für Software ist eine „App“. Es gibt auch keine Konsole, auf der du eine ausführbare Datei python starten oder mit einer Python-REPL arbeiten könntest.

Infolgedessen ist die einzige Möglichkeit, Python unter Android zu verwenden, der eingebettete Modus — das heißt, du schreibst eine native Android-Anwendung, bettest einen Python-Interpreter über libpython ein und rufst Python-Code über die Python-Einbettungs-API auf. Der vollständige Python-Interpreter, die Standardbibliothek und dein ganzer Python-Code werden dann in deine App gepackt, zu ihrer eigenen, privaten Verwendung.

Die Python-Standardbibliothek weist unter Android einige wesentliche Auslassungen und Einschränkungen auf. Einzelheiten stehen im API-Verfügbarkeitsleitfaden.

6.1. Python zu einer Android-App hinzufügen

Die meisten App-Entwickler sollten eines der folgenden Werkzeuge verwenden, das die Arbeit deutlich erleichtert:

Wenn du sicher bist, dass du das alles von Hand machen willst, lies weiter. Die Testbed-App kann dir als Vorlage dienen, jeder Schritt unten enthält einen Link zur jeweiligen Datei.

  • Build Python by following the instructions in Android/README.md. This will create the directory cross-build/HOST/prefix.

  • Füge in deiner Datei build.gradle Code ein, der die folgenden Bestandteile in dein Projekt kopiert. Alles außer deinem eigenen Python-Code lässt sich aus prefix/lib kopieren:

    • In deine JNI-Bibliotheken:

      • libpython*.*.so

      • lib*_python.so (externe Bibliotheken wie OpenSSL)

    • In deine Assets:

      • python*.* (die Python-Standardbibliothek)

      • python*.*/site-packages (dein eigener Python-Code)

  • Füge Code in deine App ein, der die Assets ins Dateisystem entpackt.

  • Füge Code in deine App ein, der Python im eingebetteten Modus startet. Das muss C-Code sein, der über JNI aufgerufen wird.

6.2. Ein Python-Paket für Android bauen

Python-Pakete lassen sich für Android als Wheels bauen und auf PyPI veröffentlichen. Das empfohlene Werkzeug dafür ist cibuildwheel, das alle Einzelheiten übernimmt: das Einrichten einer Umgebung zum Cross-Kompilieren, das Bauen des Wheels und das Testen in einem Emulator.