jython ausführen - Gibt es eine Möglichkeit, Python unter Android auszuführen?




auf interpreter (21)

Aus dem github.com/kivy/python-for-android Site:

Python für Android ist ein Projekt, mit dem Sie Ihre eigene Python-Distribution mit den gewünschten Modulen erstellen und eine apk mit Python, Libs und Ihrer Anwendung erstellen.

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

Es gibt jedoch nichts offizielles über Python auf Android, aber da es Jython gibt, gibt es eine Möglichkeit, die Schlange und den Roboter zusammenarbeiten zu lassen?


Eine Möglichkeit ist, Kivy zu verwenden:

Open-Source-Python-Bibliothek zur schnellen Entwicklung von Anwendungen, die innovative Benutzeroberflächen wie Multi-Touch-Apps verwenden.

Kivy läuft unter Linux, Windows, OS X, Android und iOS. Sie können auf allen unterstützten Plattformen denselben [Python] -Code ausführen.

Kivy Showcase App


Schauen Sie sich enaml-native das enaml-native Konzept auf Python anzuwenden.

Benutzer können Apps mit nativen Android-Widgets erstellen und APIs für die Verwendung von Android- und Java-Bibliotheken von Python aus bereitstellen.

Es lässt sich auch in Android-Studio integrieren und stellt einige der hübschen Entwicklerfunktionen von rea bereit, wie das Nachladen von Code und das Remote-Debugging.



Mit SL4A (das in anderen Antworten bereits erwähnt wurde) können Sie eine vollwertige web2py Instanz run (andere Python-Web-Frameworks sind wahrscheinlich ebenfalls Kandidaten). SL4A erlaubt keine nativen UI-Komponenten (Schaltflächen, Bildlaufleisten WebViews ), unterstützt jedoch WebViews . Ein WebView ist im Grunde nichts anderes als ein zerlegter Webbrowser, der auf eine feste Adresse gerichtet ist. Ich glaube, dass die native Google Mail-App ein WebView verwendet, anstatt die normale Widget-Route zu verwenden.

Diese Route hätte einige interessante Features:

  • Bei den meisten Python-Web-Frameworks können Sie tatsächlich ohne ein Android-Gerät oder einen Android-Emulator entwickeln und testen.
  • Der gesamte Python-Code, den Sie für das Telefon schreiben, kann auch mit nur wenigen Änderungen (wenn überhaupt) auf einem öffentlichen Webserver abgelegt werden.
  • Sie können all das verrückte Webmaterial nutzen: Abfrage, HTML5, CSS3 usw.

Es gibt auch Python-on-a-Chip, der möglicherweise die mosync: google-Gruppe ausführt


Ich habe das nicht hier gepostet, aber Sie können es jetzt mit Pyside und Qt tun, da Qt dank Necessitas auf Android läuft.

Es scheint im Moment ziemlich kludge zu sein, könnte aber letztendlich eine praktikable Route sein ...

http://qt-project.org/wiki/PySide_for_Android_guide


Eine weitere Option, wenn Sie nach 3.4.2 oder 3.5.1 suchen, ist dieses Archiv auf GitHub.

Python3-Android 3.4.2 oder Python3-Android 3.5.1

Derzeit werden Python 3.4.2 oder 3.5.1 und die 10d-Version des NDK unterstützt. Es kann auch 3.3 und 9c, 11c und 12 unterstützen

Es ist schön, dass Sie es einfach herunterladen, "make" ausführen und ".so" oder ".a" erhalten

Ich verwende dies derzeit zum Ausführen von rohem Python auf Android-Geräten. Mit ein paar Änderungen an den Build-Dateien können Sie auch x86 und armeabi 64-Bit erstellen


google-opensource.blogspot.com/2009/06/…

Ein Beispiel über Matt Cutts über SL4A - "Hier ist ein Barcode-Scanner, der in sechs Zeilen Python-Code geschrieben ist:

import android
droid = android.Android()
code = droid.scanBarcode()
isbn = int(code['result']['SCAN_RESULT'])
url = "http://books.google.com?q=%d" % isbn
droid.startActivity('android.intent.action.VIEW', url)

Scripting Layer für Android

SL4A macht was Sie wollen. Sie können es einfach direkt von Ihrem Standort aus auf Ihrem Gerät installieren und benötigen kein root.

Es unterstützt eine Reihe von Sprachen. Python ist am reifsten. Standardmäßig wird Python 2.6 verwendet, es kann jedoch ein 3.2-Port verwendet werden. Ich habe diesen Port für alle Arten von Dingen auf einem Galaxy S2 verwendet und es hat gut funktioniert.

API

SL4A bietet für jede unterstützte Sprache einen Port ihrer android Bibliothek. Die Bibliothek bietet eine Schnittstelle zu der zugrunde liegenden Android-API über ein einzelnes 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 sogar die JavaScript-API in Webviews verwenden.

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

Benutzeroberflächen

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

  • Sie können die generischen, systemeigenen Dialoge und Menüs problemlos über die API verwenden. Dies ist gut für Bestätigungsdialoge und andere grundlegende Benutzereingaben.
  • Sie können eine Webansicht auch aus einem Python-Skript heraus öffnen und dann HTML5 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 hat, hin und her übergeben. Die Benutzeroberfläche wird nicht nativ sein, ist aber dennoch eine gute Option.
  • Es gibt zwar Unterstützung für native Android-Benutzeroberflächen, aber ich bin nicht sicher, wie gut es funktioniert. Ich habe es einfach nie benutzt.

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

QPython

Es gibt ein Drittanbieterprojekt namens http://qpython.com/ . Es baut auf SL4A auf und wirft andere nützliche Dinge ein.

QPython bietet Ihnen eine schönere Benutzeroberfläche für die Verwaltung Ihrer Installation und enthält einen kleinen Touchscreen-Code-Editor, eine Python-Shell und eine PIP-Shell für die Paketverwaltung. Sie haben auch einen Python 3-Port. Beide Versionen sind kostenlos im Play Store erhältlich. QPython bündelt auch Bibliotheken aus einer Reihe von Python für Android-Projekte, einschließlich Kivy, sodass es sich nicht nur um SL4A handelt.

Beachten Sie, dass QPython immer noch seinen SL4A-Zweig entwickelt (wenn auch nicht viel, um ehrlich zu sein). Das Hauptprojekt von SL4A selbst ist ziemlich tot.

Nützliche Links


Es gibt auch SL4A das von Google-Mitarbeitern SL4A geschrieben wurde.


"Das Pygame-Subset für Android ist eine Portierung einer Teilmenge der Pygame-Funktionalität auf die Android-Plattform. Ziel des Projekts ist es, Android-spezifische Spiele zu erstellen und die Portierung von Spielen von PC-ähnlichen Plattformen auf Android zu erleichtern . "

Die Beispiele enthalten ein komplettes Spiel in einer APK, was ziemlich interessant ist.


Ich verwende die QPython-Anwendung. Es hat einen Editor, eine Konsole und Sie können Ihre Python-Programme damit ausführen. Die Anwendung ist kostenlos und der Link lautet http://qpython.com/ .




Eine weitere Option scheint pyqtdeploy zu sein, pyqtdeploy der die Dokumente zitiert werden:

ein Tool, das in Verbindung mit anderen Tools, die mit Qt geliefert werden, die Bereitstellung von PyQt4- und PyQt5-Anwendungen ermöglicht, die mit Python v2.7 oder Python v3.3 oder höher geschrieben wurden. Es unterstützt die Bereitstellung auf Desktop-Plattformen (Linux, Windows und OS X) und auf mobilen Plattformen (iOS und Android).

Gemäß PyQt5-Anwendung für Android über pyqtdeploy und Qt5 implementieren , wird es aktiv entwickelt, obwohl es schwierig ist, Beispiele für funktionierende Android-Apps oder ein Tutorial zu finden, wie alle benötigten Bibliotheken mit Android kompiliert werden. Es ist ein interessantes Projekt, das zu beachten ist!


Kivy

Ich möchte dies als Erweiterung dessen veröffentlichen, was @JohnMudd bereits geantwortet hat ( aber bitte ertragen Sie mich, da Englisch nicht meine Muttersprache ist )

Seitdem ist es Jahre her und Kivy hat sich zu v1.9-dev entwickelt. Das größte Verkaufsargument von Kivy ist meiner Meinung nach die plattformübergreifende Kompatibilität. Sie können Code in Ihrer lokalen Umgebung (Windows / * Nix usw.) codieren und testen. Sie können auch Ihre App erstellen, debuggen und verpacken, um sie auf Ihren Android / iOS / Mac / Windows-Geräten auszuführen.

Mit Kivys eigener KV Sprache können Sie die GUI-Oberfläche einfach codieren und erstellen (dies ist wie bei Java XML, aber anstelle von TextView usw. hat KV eigene ui.widgets für die ähnliche Übersetzung), was meiner Meinung nach recht einfach ist adoptieren.

Derzeit sind Buildozer und python-for-android die am meisten empfohlenen Tools zum Erstellen / Packen Ihrer Apps. Ich habe sie beide ausprobiert und kann fest sagen, dass sie das Erstellen von Android-Apps mit Python zu einem Kinderspiel machen. Benutzer, die sich in ihrer Konsole / Terminal / Eingabeaufforderung wohl fühlen, sollten keine Probleme damit haben, und ihre Handbücher sind ebenfalls gut dokumentiert.

Darüber hinaus ist iOS ein weiteres großes Verkaufsargument von Kivy, vorausgesetzt, Sie können dieselbe Codebasis mit wenigen Änderungen verwenden, die für den Testlauf auf Ihrem iOS-Gerät erforderlich sind, kivy-ios Homebrew-Tools, obwohl Xcode für die Erstellung vor dem Ausführen erforderlich ist ihre Geräte (AFAIK der iOS-Simulator in Xcode funktioniert derzeit nicht für die x86-Architektur). Es gibt auch einige Abhängigkeitsprobleme, die manuell in Xcode kompiliert und durcheinander gebracht werden müssen, um eine erfolgreiche Erstellung zu ermöglichen, aber es wäre nicht zu schwierig, sie zu lösen, und die Mitarbeiter der Kivy Google Group sind auch sehr hilfreich.

Alles in allem sollten Benutzer mit guten Python-Kenntnissen in Wochen (wenn nicht Tagen) die einfachen Grundlagen für die Erstellung einfacher Apps haben.

Erwähnenswert ist auch, dass Sie Ihre Python-Module mit dem Build bündeln (Rezepturen erstellen) können, sodass Benutzer viele vorhandene Bibliotheken verwenden können, die Python mitbringt, wie Requests & PIL usw. durch die Kivy-Erweiterungsunterstützung .

Manchmal erfordert Ihre Anwendung eine Funktionalität, die über den Umfang von Kivy hinausgeht. In diesen Fällen muss auf externe Softwarebibliotheken zurückgegriffen werden. Angesichts der Fülle des Python-Ökosystems gibt es bereits viele Softwarebibliotheken, die Sie einfach importieren und sofort verwenden können.

Wenn Sie Kivy für ernsthaftere / kommerzielle Projekte verwenden, können Sie feststellen, dass vorhandene Module nicht zufriedenstellend sind. Es gibt jedoch einige praktikable Lösungen, mit den "work in progress" von pyjnius für Android und pyobjus . Benutzer können jetzt über diese Module auf Java / Objective-C-Klassen zugreifen, um einige der systemeigenen APIs zu steuern.

Meine Erfahrung in Kivy ist, dass es mit erfahrenen Python-Programmierern und einigen ernstzunehmenden Programmierern, die eine schnelle Entwicklung oder einfache Codebasiswartung wünschen, die beste Lösung findet. Es läuft gut auf mehreren Plattformen, wenn auch nicht wirklich mit dem nativen Gefühl.

Ich hoffe, dass einige Python-App-Programmierer diese Informationen für nützlich halten und einen Blick auf Kivy werfen. Es kann nur besser werden (mit mehr Unterstützung und wenn Bibliotheken / Module portiert werden), wenn das Interesse der Community groß ist.

PS Ich habe keinerlei Beziehung zu Kivy, ich bin lediglich ein Programmierer, der die Idee, Python-Codierungsspaß für die Entwicklung von mobilen / plattformübergreifenden Anwendungen zu bieten, wirklich mag.


Es gibt eine App namens QPython3 im Playstore, die sowohl zum Bearbeiten als auch zum Ausführen von Python-Skripts verwendet werden kann.

Playstore-Link

Eine andere App namens Termux, in der Sie Python mit dem Befehl installieren können

pkg install python

Playstore-Link


Als Python Liebhaber und Android-Programmierer muss ich leider sagen, dass dies nicht wirklich ein guter Weg ist. Es gibt zwei Probleme.

Ein Problem ist, dass die Android-Entwicklungstools nicht nur eine Programmiersprache enthalten. Bei vielen Android-Grafiken werden XML-Dateien zum Konfigurieren der Anzeige verwendet, ähnlich wie bei HTML. Die integrierten Java-Objekte sind wirklich in dieses XML-Layout integriert, und es ist viel einfacher, als eigenen Code zu schreiben, um von der Logik zur Bitmap zu gelangen.

Das andere Problem ist, dass das G1 (und wahrscheinlich auch andere Android-Geräte für die nahe Zukunft) wirklich nicht so schnell sind. 200 MHz-Prozessoren und der Arbeitsspeicher ist sehr begrenzt. Selbst in Java müssen Sie eine angemessene Menge an Neuschreibvorgängen erstellen, um weitere Objekte zu vermeiden, wenn Sie Ihre App reibungslos gestalten möchten. Python wird auf mobilen Geräten noch eine Weile zu langsam sein.


Ich habe eine Anleitung und einen Patch für das Cross-Compilieren von Python 2.7.2 für Android veröffentlicht. Sie finden ihn in meinem Blog hier: http://mdqinc.com/blog/2011/09/cross-compiling-python-for-android/

BEARBEITEN: Ich habe Ignifuga , meine 2D-Spiel-Engine, die auf Python / SDL basiert und Open Compiliert hat , für Android zusammengestellt. Selbst wenn Sie es nicht für Spiele verwenden, erhalten Sie möglicherweise nützliche Ideen aus dem Code und dem Builder-Dienstprogramm (genannt Schafer, nach Tim ... wissen Sie, wer).


Es gibt eine lustige benannte Methode / Konstante / was auch immer in jeder Android-Version.

Die einzige praktische Anwendung, die ich je gesehen habe, war im letzten Aufruf zum Google I / O- Wettbewerb, in dem sie gefragt wurden, was für eine bestimmte Version es ist, um zu sehen, ob die Teilnehmer den API-Diff-Bericht für jede Version lesen. Der Wettbewerb hatte auch Programmierprobleme, aber im Allgemeinen einige Kleinigkeiten, die zuerst automatisch bewertet werden konnten, um die Anzahl der Einsendungen auf vernünftige Beträge zu bringen, die einfacher zu überprüfen wären.







android python jython ase android-scripting