2085 Stimmen

Gibt es eine Möglichkeit, Python auf Android laufen zu lassen?

Wir arbeiten an einem S60 Version und diese Plattform hat eine schöne Python-API..

Allerdings gibt es nichts Offizielles über Python auf Android, aber da Jython Gibt es eine Möglichkeit, dass die Schlange und der Roboter zusammenarbeiten?

82voto

gabomdq Punkte 1720

Kreuzkompilierung & Ignifuga

Mein Blog hat Anweisungen und ein Patch für die Cross-Kompilierung von Python 2.7.2 für Android.

Ich habe auch ein Open-Source Ignifuga meine 2D-Spiel-Engine. Sie basiert auf Python/SDL und ist für Android crosskompiliert. Auch wenn Sie es nicht für Spiele verwenden, können Sie nützliche Ideen aus dem Code oder dem Builder-Dienstprogramm (namens Schafer (nach Tim... Sie wissen schon, wer).

82voto

Carl Smith Punkte 2935

Skripting Layer für Android

SL4A macht, was Sie wollen. Sie können es einfach direkt auf Ihrem Gerät von ihrer Website zu installieren, und brauchen nicht Root.

Es unterstützt eine Reihe von Sprachen. Python ist die am weitesten entwickelte Sprache. Standardmäßig verwendet es Python 2.6, aber es gibt eine 3.2 Hafen können Sie stattdessen verwenden. Ich habe diesen Anschluss für alle möglichen Dinge auf einem Galaxy S2 verwendet und es hat gut funktioniert.

API

SL4A bietet eine Portierung ihrer android Bibliothek für jede unterstützte Sprache. Die Bibliothek bietet eine Schnittstelle zur zugrunde liegenden Android-API durch eine einzige Android Objekt.

from android import Android

droid = Android()
droid.ttsSpeak('hello world') # example using the text to speech facade

Jede Sprache hat so ziemlich die gleiche API. Sie können die JavaScript-API sogar innerhalb von Webviews verwenden.

let droid = new Android();
droid.ttsSpeak("hello from js");

Benutzerschnittstellen

Für Benutzeroberflächen haben Sie drei Möglichkeiten:

  • Sie können die generischen, nativen Dialoge und Menüs einfach über die API VERWENDEN. Dies ist gut für Bestätigungsdialoge und andere grundlegende Benutzereingaben.
  • Sie können auch eine Webansicht aus einem Python-Skript heraus öffnen und dann HTML5 verwenden für die Benutzeroberfläche verwenden. Wenn Sie Webviews von Python aus verwenden, können Sie Nachrichten zwischen der Webansicht und dem Python-Prozess, der sie erzeugt, hin und her der ihn erzeugt hat. Die Benutzeroberfläche wird nicht nativ sein, aber es ist trotzdem eine gute Option, die haben.
  • Es gibt einige Unterstützung für native Android-Benutzeroberflächen, aber ich bin nicht aber ich bin nicht sicher, wie gut sie funktioniert; ich habe sie noch nie benutzt.

Sie können die Optionen mischen, d. h. Sie können eine Webansicht für die Hauptschnittstelle haben und trotzdem native Dialoge verwenden.

QPython

Es gibt ein Drittanbieterprojekt namens QPython . Es baut auf SL4A auf und fügt einige andere nützliche Dinge hinzu.

QPython bietet Ihnen eine schönere Benutzeroberfläche zur Verwaltung Ihrer Installation und enthält einen kleinen Code-Editor mit Touchscreen, eine Python-Shell und eine PIP-Shell für die Paketverwaltung. Es gibt auch eine Python 3-Portierung. Beide Versionen sind kostenlos im Play Store erhältlich. QPython bündelt auch Bibliotheken aus einer Reihe von Python auf Android-Projekten, einschließlich Kivy, es ist also nicht nur SL4A.

Beachten Sie, dass QPython immer noch ihren Fork von SL4A entwickelt (obwohl, nicht viel, um ehrlich zu sein). Das SL4A-Hauptprojekt selbst ist so gut wie tot.

Nützliche Links

67voto

Termux

Sie können die Termux App, die eine POSIX-Umgebung für Android bereitstellt, um Python zu installieren.

Beachten Sie, dass apt install python installiert Python3 auf Termux. Für Python2 müssen Sie Folgendes verwenden apt install python2 .

59voto

Anzel Punkte 18359

Kivy

Ich möchte mich dem anschließen, was @JohnMudd über Kivy geschrieben hat. Die von ihm beschriebene Situation ist nun schon einige Jahre her, und Kivy hat sich erheblich weiterentwickelt.

Das größte Verkaufsargument für Kivy ist meiner Meinung nach seine plattformübergreifende Kompatibilität. Sie können alles in einer beliebigen Desktop-Umgebung (Windows/*nix usw.) programmieren und testen und Ihre App dann für eine Reihe verschiedener Plattformen verpacken, darunter Android, iOS, MacOS und Windows (auch wenn den Apps oft das native Look-and-Feel fehlt).

Mit Kivy's eigener KV Sprache können Sie die GUI-Schnittstelle leicht programmieren und erstellen (es ist genau wie Java XML, aber statt TextView usw. hat KV seine eigene ui.widgets für eine ähnliche Übersetzung), die meines Erachtens recht einfach zu übernehmen ist.

Derzeit Buildozer y python-für-Android sind die am meisten empfohlenen Tools zum Erstellen und Verpacken Ihrer Anwendungen. Ich habe beide ausprobiert und kann mit Sicherheit sagen, dass sie die Erstellung von Android-Apps mit Python zu einem Kinderspiel machen. Ihre Anleitungen sind auch gut dokumentiert.

iOS ist ein weiteres großes Verkaufsargument von Kivy. Sie können die gleiche Code-Basis mit wenigen Änderungen verwenden, die über kivy-ios Homebrew-Tools, obwohl Xcode für den Build erforderlich ist, bevor er auf ihren Geräten ausgeführt werden kann (AFAIK funktioniert der iOS-Simulator in Xcode derzeit nicht für den Build mit x86-Architektur). Es gibt auch einige Abhängigkeitsprobleme, die manuell kompiliert werden müssen und mit denen man in Xcode herumspielen muss, um einen erfolgreichen Build zu erhalten, aber sie wären nicht allzu schwierig zu lösen und die Leute in Kivy Google-Gruppe sind ebenfalls sehr hilfreich.

Trotzdem sollten Benutzer mit guten Python-Kenntnissen keine Probleme haben, sich die Grundlagen schnell anzueignen.

Wenn Sie Kivy für ernsthaftere Projekte verwenden, werden Sie die vorhandenen Module vielleicht als unzureichend empfinden. Es gibt jedoch einige praktikable Lösungen. Mit dem (in Arbeit befindlichen) pyjnius für Android, und pyobjus können Benutzer nun auf Java/Objective-C-Klassen zugreifen, um einige der nativen APIs zu steuern.

41voto

Ilya Kochetov Punkte 17577

Im Moment nicht, und Sie hätten Glück, wenn Sie Jython bald zum Laufen bekämen. Wenn Sie planen, jetzt mit der Entwicklung zu beginnen, sind Sie besser dran, wenn Sie vorerst bei Java bleiben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X