Wie mache ich Android App komplett in Python? [geschlossen]

103

Ich möchte eine (ziemlich einfache) Android-App entwickeln, die über den Play Store verbreitet wird. Ich würde das gerne komplett in Python machen. Die Online-Recherche hat mich jedoch nicht ganz aufgeklärt: Die meisten Kommentare sind entweder veraltet (> 1 Jahr alt und ich glaube, dass es seitdem eine bessere Integration von Python gibt) oder sie sprechen darüber Ausführen von Python in Android (z . B. hier ).

Daher suche ich Informationen zu folgenden Fragen:

  • Ist es möglich, eine App vollständig in Python zu entwickeln - und welche Tools gibt es dafür? (Ist zB Kivy empfehlenswert?)
  • Wenn ja: Was sind die besten Softwareumgebungen, um dies zu implementieren? (Ich habe erfolglos versucht, Android Studio zu verwenden, konnte aber keine Möglichkeit finden, Python-Code dort auszuführen.)

Ich bin ziemlich neu in der App-Entwicklung und würde es sehr begrüßen, wenn ich dies eher in Python als in Jave usw. tun würde, was ich noch nicht weiß.

Vielen Dank für Ihre Hilfe im Voraus.

Ivo
quelle
In der Vergangenheit habe ich Kivy und ihr Buildozer-Programm verwendet. Sie haben Dokumentation hier kivy.org/docs/guide/packaging-android.html
es
Nativ müssen Sie entweder Java oder Kotlin verwenden, aber wie andere darauf hingewiesen haben, gibt es "App-Builder" oder Frameworks von Drittanbietern, die Sie mit Python wie PyMob oder Kivy verwenden können.
Dominik Schmidt
6
Ich habe ein Android-Spiel erstellt, das vollständig in Python mit Kivy entwickelt wurde. Es heißt CoinTex und ist hier bei Google Play verfügbar: play.google.com/store/apps/details?id=coin.tex.cointexreactfast . Der Quellcode des Spiels ist hier bei GitHub verfügbar: github.com/ahmedfgad/CoinTex . Ich habe auch ein Buch geschrieben, das in diesem Jahr veröffentlicht wird, um Android-Apps mit Python zu erstellen. Der Titel "Erstellen von Android-Apps in Python mit Kivy mit Android Studio: Mit Pyjnius, Plyer und Buildozer Ahmed Fawzy Gad" ist hier bei Amazon erhältlich: amazon.com/dp/1484250303 .
Ahmed Gad
1
Ich kann keine Antwort posten, aber hier scheint eine Lösung zu sein : Es werden verschiedene Technologien demonstriert, darunter PySide-basierte QML-GUIs, die den Necessitas Qt-Port verwenden, und der Py4A / SL4A-basierte Ansatz, der mit WebKit und Re von Android kombiniert werden kann - Verwenden Sie Python-Webframeworks.
Basj

Antworten:

109

Um Ihre erste Frage zu beantworten: Ja, es ist möglich, eine Android-Anwendung in reinem Python zu entwickeln. Um dies zu erreichen, schlage ich vor, dass Sie BeeWare verwenden , eine Suite von Python-Tools , die sehr gut zusammenarbeiten und die Entwicklung ermöglichen Plattform native Anwendungen in Python.

Kasse Dieses Video vom Schöpfer von BeeWare , die perfekt erklärt und der Anwendung zeigt ,

Wie es funktioniert

Die bevorzugte Implementierungssprache von Android ist Java. Wenn Sie also eine Android-Anwendung in Python schreiben möchten, müssen Sie eine Möglichkeit haben, Ihren Python-Code auf einer Java Virtual Machine auszuführen. Das macht VOC . VOC ist ein Transpiler - es verwendet Python-Quellcode, kompiliert ihn zu CPython-Bytecode und transpiliert diesen Bytecode dann in Java-kompatiblen Bytecode. Das Endergebnis ist, dass Ihre Python-Quellcodedateien direkt in eine Java-Klassendatei kompiliert werden, die in eine Android-Anwendung gepackt werden kann.

Mit VOC können Sie auch auf native Java-Objekte zugreifen, als wären sie Python-Objekte, Java-Schnittstellen mit Python-Klassen implementieren und Java-Klassen mit Python-Klassen in Unterklassen unterteilen. Auf diese Weise können Sie eine Android-Anwendung direkt für die nativen Android-APIs schreiben.

Sobald Sie Ihre native Android-Anwendung geschrieben haben, können Sie Ihren Python-Code mit Aktenkoffer als Android-Anwendung verpacken.

Aktentasche ist ein Tool zum Konvertieren eines Python-Projekts in eine eigenständige native Anwendung. Sie können Projekte verpacken für:

  • Mac
  • Windows
  • Linux
  • iPhone / iPad
  • Android
  • Apple TV
  • tvOS.

Sie können diese in Python geschriebene native Android Tic Tac Toe-App mithilfe der BeeWare-Suite überprüfen. auf GitHub

Zusätzlich zu den BeeWare-Tools müssen Sie ein JDK und ein Android SDK installiert haben, um Ihre Anwendung testen zu können.

und um Ihre zweite Frage zu beantworten: Eine gute Umgebung kann alles sein, mit dem Sie vertraut sind , sei es ein Texteditor und eine Befehlszeile oder eine IDE. Wenn Sie nach einer guten Python-IDE suchen , würde ich vorschlagen, dass Sie Pycharm ausprobieren Eine Community-Edition, die kostenlos ist und eine ähnliche Umgebung wie Android Studio hat, da sie von derselben Firma erstellt wurde.

Ich hoffe das war hilfreich

maroof shittu
quelle
1
Bin ich es nur, oder wurde VOC aufgegeben?
Fund Monica Klage
2
Dies ist eine Sackgasse (Das letzte Mal, als ich es ausgecheckt habe: Dezember 2018). Eine oder mehrere Komponenten dieser übermäßig komplexen Lösung funktionieren nicht mehr oder können sich nicht auf dem neuesten Stand halten.
Berry Tsakala
2
Nur ein Update für 2019, aber Kotlin ist jetzt die bevorzugte Sprache für die Android-Entwicklung.
DaveTheMinion
3
@Basj Ich möchte sagen, dass Beeware definitiv für eine Weile verfügbar sein wird, denn wenn Sie sich nur den GitHub-Account ansehen, werden Sie feststellen, dass er aktiv entwickelt wird, und wenn Sie zum Gitter-Kanal gehen, können Sie dies tun Erreichen Sie immer das gesamte Team, insbesondere Dr. Russell (freakyboy), den Schöpfer, und die Community ist sehr freundlich. Außerdem gab es einen kürzlich veröffentlichten Tweet (26. September 2019) von ihrem offiziellen Konto, in dem angekündigt wurde, dass sie ein Ausbildungsstipendium von Python erhalten haben Software-Grundlage. Ich denke, es wäre Ihre Zeit wert, besonders wenn Sie Python als Sprache
mögen
1
BeeWare scheint derzeit auf keinen Fall Android (Java) zu unterstützen.
Mark Anderson
14

Sie können BeeWare ausprobieren - wie auf der Website beschrieben:

Schreiben Sie Ihre Apps in Python und veröffentlichen Sie sie unter iOS, Android, Windows, MacOS, Linux, Web und tvOS über umfangreiche native Benutzeroberflächen. Eine Codebasis. Mehrere Apps.

Gibt an, dass Sie jetzt Android-Apps in Python schreiben möchten, und hat den Vorteil, dass Sie in Zukunft kein weiteres Framework mehr lernen müssen, wenn Sie am Ende auch etwas auf einer der anderen aufgeführten Plattformen tun möchten.

Hier ist das Tutorial für Android Apps .

emmagordon
quelle
4
Haben Sie mit BeeWare selbst eine App erstellt?
Berry Tsakala
10

Es gibt zwei Hauptkonkurrenten für Python-Apps auf Android

Chaquopy

https://chaquo.com/chaquopy/

Dies ist in das Android-Build-System integriert und bietet eine Python-API für alle Android-Funktionen. So zitieren Sie die Website: "Die vollständige Android-API und das Toolkit für die Benutzeroberfläche stehen Ihnen direkt zur Verfügung."

Beeware (Toga Widget Toolkit)

https://pybee.org/

Dies bietet einen Multi-Target-Transpiler, der viele Ziele wie Android und iOS unterstützt. Es verwendet ein generisches Widget-Toolkit (Toga), das den Host-Schnittstellenaufrufen zugeordnet ist.

Welcher?

Beide sind aktive Projekte und ihre Github-Konten zeigen eine ganze Menge aktueller Aktivitäten.

Beeware Toga ist wie alle Widget-Bibliotheken gut geeignet, um die Grundlagen auf mehrere Plattformen zu übertragen. Wenn Sie grundlegende Designs haben und auf andere Plattformen expandieren möchten, sollte dies für Sie gut funktionieren.

Auf der anderen Seite ist Chaquopy bei der Zuordnung der Python-API zu Android viel präziser. Außerdem können Sie Java einmischen. Dies ist nützlich, wenn Sie vorhandenen Code aus anderen Ressourcen verwenden möchten. Wenn Sie strenge Designziele haben und vorwiegend auf Android abzielen möchten, ist dies eine viel bessere Ressource.

Harvey
quelle
8

Android, Python!

Als ich diese beiden Schlüsselwörter in Ihrer Frage zusammen sah, kam mir zuerst Kivy in den Sinn.

Kivy Logo

Bevor ich mit Android Studio zur nativen Android-Entwicklung in Java kam, hatte ich Kivy ausprobiert . Es ist einfach großartig. Hier sind einige Vorteile, die ich herausfinden könnte.


Einfach zu benutzen

Mit Python-Grundlagen haben Sie keine Probleme, es zu lernen.


Gute Gemeinschaft

Es ist gut dokumentiert und hat eine großartige, aktive Community.


Plattformübergreifend.

Mit diesem einzigen Framework können Sie Dinge für Android, iOS, Windows, Linux und sogar Raspberry Pi entwickeln. Open Source.


Es ist eine freie Software

Zumindest wenige seiner (plattformübergreifenden) Wettbewerber möchten, dass Sie eine Gebühr zahlen, wenn Sie eine kommerzielle Lizenz wünschen.


Beschleunigte Grafikunterstützung

Die über OpenGL ES 2 aufgebaute Grafik-Engine von Kivy eignet sich für Software, die eine schnelle Grafikwiedergabe erfordert, wie z. B. Spiele.



Wenn Sie nun zum nächsten Teil der Frage kommen, können Sie Android Studio IDE für Kivy nicht verwenden. Hier finden Sie eine detaillierte Anleitung zum Einrichten der Entwicklungsumgebung.

Bertram Gilfoyle
quelle
4
Die Windows-Unterstützung liegt weit hinter den Produktionsstandards (oder sogar dem Hobby-Standard) zurück. Außerdem kann die Hälfte der Welt es nicht verwenden, da es an RTL-Unterstützung mangelt.
Berry Tsakala
Warum haben Sie Kivy verlassen und in native Entwicklungstools geändert? Sie schlagen vor, dass es einige Nachteile hat.
igoemon