it-swarm.com.de

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

Wir arbeiten an einer S6 Version und diese Plattform hat eine Nice Python API.

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

2097
e-satis

Eine Möglichkeit ist, Kivy zu verwenden:

Open-Source-Bibliothek Python für die schnelle Entwicklung von Anwendungen, die innovative Benutzeroberflächen verwenden, z. B. Multi-Touch-Apps.

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

982
JohnMudd

Es gibt auch das neue Android Scripting Environment (ASE/SL4A) Projekt. Es sieht fantastisch aus und ist in native Android Komponenten integriert.

Hinweis: Nicht mehr unter "Aktive Entwicklung", aber möglicherweise einige Gabeln.

335
Heat Miser

Ja! : Android Scripting Environment

Ein Beispiel über Matt Cutts über SL4A - "hier ist ein Barcodescanner, 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)
211
unmounted

Es gibt auch SL4A groß geschrieben von Google-Mitarbeitern.

85
Rab Ross

"Die Pygame-Teilmenge für Android ist ein Port einer Teilmenge der Pygame-Funktionalität für die Plattform Android. Ziel des Projekts ist es, Folgendes zu ermöglichen die Erstellung von Android-spezifischen Spielen und die Vereinfachung der Portierung von Spielen von PC-ähnlichen Plattformen auf Android. "

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

84
muriloq

Ich habe Anweisungen und einen Patch zum Cross-Compilieren von Python 2.7.2 für Android veröffentlicht. Sie können ihn auf meinem Blog hier herunterladen: http://mdqinc.com/blog/2011/09)/cross-compiling-python-for-Android /

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

73
gabomdq

Scripting Layer für Android

SL4A macht was Sie wollen. Sie können es einfach direkt von der Site auf Ihrem Gerät installieren und benötigen kein Root-Verzeichnis.

Es unterstützt eine Reihe von Sprachen. Python ist am ausgereiftesten. Standardmäßig wird Python 2.6 verwendet, es gibt jedoch einen .2-Port , den Sie stattdessen verwenden können. Ich habe diesen Port für alle Arten von Dingen auf einem Galaxy S2 verwendet und es hat gut funktioniert.

API

SL4A stellt für jede unterstützte Sprache einen Port der Bibliothek Android zur Verfügung. Die Bibliothek bietet eine Schnittstelle zur zugrunde liegenden API Android über ein einzelnes Objekt Android.

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 einfach über die API verwenden. Dies ist gut für Bestätigungsdialoge und andere grundlegende Benutzereingaben.
  • Sie können eine Webansicht auch in einem Python Skript öffnen und dann HTML5 für die Benutzeroberfläche verwenden. Wenn Sie Webviews aus Python verwenden, können Sie Nachrichten zwischen der Webansicht und dem Python -Prozess, der sie erzeugt hat, hin und her übertragen. Die Benutzeroberfläche wird nicht nativ sein, aber es ist immer noch eine gute Option.
  • Es gibt einige Unterstützung für native Android Benutzeroberflächen, aber ich bin nicht sicher, wie gut es funktioniert; Ich habe es einfach noch nie benutzt.

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

QPython

Es gibt ein Drittanbieterprojekt mit dem Namen QPython . Es baut auf SL4A auf und wirft einige andere nützliche Dinge ein.

QPython bietet Ihnen eine bessere 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 in Android Projekten, einschließlich Kivy, sodass es nicht nur SL4A ist.

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

Nützliche Links

72
Carl Smith

Als Python Liebhaber und Android Programmierer bin ich traurig zu sagen, dass dies kein guter Weg ist. Es gibt zwei Probleme.

Ein Problem ist, dass die Entwicklungstools von Android viel mehr als nur eine Programmiersprache enthalten. Viele der Android Grafiken enthalten XML-Dateien zum Konfigurieren der Anzeige, ä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 RAM sind sehr begrenzt. Sogar in Java müssen Sie ordentlich umschreiben, um mehr Objekterstellung zu vermeiden, wenn Sie Ihre App perfekt flüssig machen möchten. Python wird auf Mobilgeräten noch eine Weile zu langsam sein.

65
lacker

Kivy


Ich möchte dies als eine Erweiterung dessen posten, was @ JohnMudd bereits beantwortet hat (, aber bitte ertrage es mit mir, wenn Englisch nicht ' t meine erste Sprache )

Es ist 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 in Ihrer lokalen Umgebung (Windows/* nix usw.) programmieren und testen. Sie können Ihre App auch erstellen, debuggen und paketieren, um sie auf Ihren Android-/iOS-/Mac-/Windows-Geräten auszuführen.

Mit Kivys eigener Sprache KV können Sie die GUI-Oberfläche einfach codieren und erstellen (es ist wie Java XML, aber anstelle von TextView usw. hat KV einen eigenen ui.widgets für die ähnliche übersetzung), was meiner meinung nach recht einfach zu übernehmen ist.

Derzeit sind Buildozer und python-for-Android die am häufigsten empfohlenen Tools zum Erstellen/Packen Ihrer Apps. Ich habe beide ausprobiert und kann mit Bestimmtheit behaupten, dass das Erstellen von Android Apps mit Python ein Kinderspiel ist. Benutzer, die sich in der Konsole/im Terminal/in der Eingabeaufforderung wohl fühlen, sollten keine Probleme mit der Verwendung 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 nur geringen Änderungen verwenden, die für die Testausführung auf Ihrem iOS-Gerät erforderlich sind, und zwar über kivy-ios Homebrew-Tools Erforderlich für den Build, bevor sie auf ihren Geräten ausgeführt werden (AFAIK, der iOS-Simulator in Xcode, funktioniert derzeit nicht für den Build mit x86-Architektur). Es gibt auch einige Abhängigkeitsprobleme, die manuell in Xcode kompiliert und durchgespielt werden müssen, um einen erfolgreichen Build zu erzielen. Es wäre jedoch nicht allzu schwierig, sie zu lösen, und die Personen in Kivy Google Group sind ebenfalls sehr hilfreich .

Trotzdem sollten Benutzer mit guten Python Kenntnissen kein Problem damit haben, die Grundlagen in Wochen (wenn nicht Tagen) zu erlernen, um einige einfache Apps zu erstellen.

Erwähnenswert ist auch, dass Sie Ihre Python - Module mit dem Build bündeln (Rezepte erstellen) können, damit Benutzer wirklich von vielen vorhandenen Bibliotheken Python Gebrauch machen können, z. B. Requests & PIL etc. durch Kivy's Extension Support .

Manchmal erfordert Ihre Anwendung Funktionen, die über das hinausgehen, was Kivy bieten kann. 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.

Last but not least, wenn Sie Kivy für ernstere/kommerzielle Projekte verwenden, werden Sie möglicherweise feststellen, dass vorhandene Module nicht zufriedenstellend sind. Es gibt jedoch einige praktikable Lösungen, bei denen pyjnius für Android und pyobjus in Arbeit sind. Benutzer können jetzt über diese Module auf Java/Objective-C-Klassen zugreifen, um einige der nativen APIs zu steuern.

Meine Erfahrung in Kivy ist, dass es am besten zu erfahrenen Python - Programmierern und einigen ernsthaften Programmierern passt, die eine schnelle Entwicklung oder einfache Pflege der Codebasis wünschen. Es läuft gut auf mehreren Plattformen, wenn auch nicht wirklich mit dem nativen Gefühl.

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

P.S. Ich habe überhaupt keine Beziehung zu Kivy, ich bin nur ein Programmierer, der die Idee, Python -Codierspaß für die Entwicklung von Mobilgeräten/plattformübergreifenden Anwendungen bereitzustellen, wirklich mag.

41
Anzel

Im Moment nicht und Sie können sich glücklich schätzen, Jython bald zum Laufen zu bringen. Wenn Sie jetzt mit der Entwicklung beginnen möchten, sollten Sie sich zunächst an Java halten.

37
Ilya Kochetov

Mit SL4A (das bereits in anderen Antworten erwähnt wurde) können Sie run eine vollständige web2py Instanz (other python web frameworks erstellen wahrscheinlich auch Kandidaten). Mit SL4A können Sie keine nativen UI-Komponenten (Schaltflächen, Bildlaufleisten usw.) erstellen, aber es unterstützt WebViews . Ein WebView ist im Grunde nichts anderes als ein abgespeckter Webbrowser, der auf eine feste Adresse verweist. Ich glaube, dass die native Google Mail-App ein WebView verwendet, anstatt die normale Widget-Route einzuschlagen.

Diese Route hätte einige interessante Eigenschaften:

  • Bei den meisten python Webframeworks können Sie die Entwicklung und den Test auch ohne ein Android Gerät oder einen Android Emulator durchführen.
  • Unabhängig vom Python Code, den Sie für das Telefon schreiben, kann dieser auch mit nur sehr geringen (wenn überhaupt) Änderungen auf einem öffentlichen Webserver gespeichert werden.
  • Sie könnten alle verrückten Web-Dinge nutzen: Query, HTML5, CSS3 usw.
36
gdw2

Ich benutze 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/ .

27
kyle k

Sie können Termux Anwendung verwenden:

Beachten Sie, dass Sie apt install python install python 3. für python 2 apt install python2 aufrufen sollten.

Einige Demos hier: https://www.youtube.com/watch?v=fqqsl72mASE

Und auch die Github-Seite: https://github.com/termux

25

Von der Python für Android Seite:

Python für Android ist ein Projekt zum Erstellen einer eigenen Python -Distribution mit den gewünschten Modulen und zum Erstellen einer Apk mit Python, Libs und Ihrer Anwendung.

24
gdw2

Noch ein Versuch: https://code.google.com/p/Android-python27/

Dieser bettet direkt den Python Interpretter in deine App ein.

18
e-satis

Chaquopy

Chaquopy ist ein Plugin für das Gradle-basierte Build-System von Android Studio. Es konzentriert sich auf enge Integration mit den Standard Android Entwicklungstools.

  • Es bietet vollständige APIs zum Aufrufen von Java von Python oder Python von Java , sodass der Entwickler die Sprache verwenden kann, die für jede Komponente seiner App am besten geeignet ist.

  • Es kann automatisch PyPI-Pakete herunterladen und in eine App integrieren, einschließlich ausgewählter nativer Pakete wie NumPy.

  • Es ermöglicht den vollständigen Zugriff auf alle Android APIs von Python, einschließlich des Toolkits für die native Benutzeroberfläche ( Beispiel für eine pure-Python-Aktivität ).

Dies ist ein kommerzielles Produkt, aber es ist kostenlos für den Open-Source-Gebrauch und wird immer so bleiben.

(Ich bin der Schöpfer dieses Produkts.)

16
mhsmith

Es gibt eine App namens QPython3 im Playstore, die zum Bearbeiten und Ausführen von python Skripten 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

Wenn Sie Apps entwickeln möchten, gibt es Python Android Scripting Layer ( SL4A ) .

The Scripting Layer for Android, SL4A, is an open source application that allows programs written in a range of interpreted languages to run on Android. It also provides a high level API that allows these programs to interact with the Android device, making it easy to do stuff like accessing sensor data, sending an SMS, rendering user interfaces and so on.

Sie können auch PySide für Android überprüfen, bei dem es sich tatsächlich um Python Bindungen handelt das Qt 4.

Es gibt eine Plattform namens PyMob , auf der Apps nur in Python und geschrieben werden können Der Compiler-Toolflow (PyMob) konvertiert sie in native Quellcodes für verschiedene Plattformen.

16
pz64_

Sie können Ihren Python Code mit sl4a ausführen. sl4a unterstützt Python, Perl , JRuby , Lua , BeanShell, JavaScript, Tcl und Shell-Skript.

Sie können sl4a Python-Beispiele lernen.

14
Hitul

Es gibt auch Python-on-a-Chip, auf dem möglicherweise mosync ausgeführt wird: google group

14
fooba

Sie können QPython verwenden:

Es hat eine Python Konsole, einen Editor sowie Paketverwaltung/Installer

http://qpython.com/

Es ist ein Open-Source-Projekt mit den Implementierungen Python 2 und Python 3. Sie können den Quellcode und die Android .apk-Dateien direkt von github herunterladen.

QPython 2: https://github.com/qpython-Android/qpython/releases

QPython 3: https://github.com/qpython-Android/qpython3/releases

12
ode2k

Habe das hier nicht gepostet, aber du kannst es jetzt mit Pyside und Qt machen, da Qt dank Necessitas auf Android läuft.

Es scheint im Moment ein ziemliches Durcheinander zu sein, könnte aber irgendwann eine brauchbare Route sein ...

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

10
radix07

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 die .so oder .a erhalten

Ich verwende dies derzeit, um raw Python auf Android Geräten auszuführen. Mit einigen Änderungen an den Build-Dateien können Sie auch x86- und armeabi 64-Bit-Dateien erstellen

10
GR Envoy

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

ein Tool, das in Verbindung mit anderen mit Qt bereitgestellten Tools 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).

Entsprechend Bereitstellen der PyQt5-Anwendung für Android über pyqtdeploy und Qt5 wird sie aktiv entwickelt, obwohl es schwierig ist, Beispiele für funktionierende Android Apps oder Anleitungen zu finden Cross-Kompilieren aller benötigten Bibliotheken auf Android. Es ist jedoch ein interessantes Projekt, das man im Hinterkopf behalten sollte!

8

Schauen Sie sich enaml-native an, das das Konzept der reaktiven Native auf Python anwendet.

Benutzer können Apps mit systemeigenen Widgets Android erstellen und APIs zur Verwendung von Bibliotheken Android und Java aus Python bereitstellen.

Es lässt sich auch in Android-Studio integrieren und bietet einige der Nice-Dev-Funktionen von react wie das Neuladen von Code und das Debuggen per Fernzugriff.

4
frmdstryr

Schauen Sie sich BeeWare an. Zum Zeitpunkt der Beantwortung dieser Frage befindet es sich noch in der frühen Entwicklung. Ziel ist es, native Apps mit Python für alle unterstützten Betriebssysteme, einschließlich Android, erstellen zu können.

4
DrawT