Antworten:
Eine Möglichkeit ist die Verwendung von Kivy :
Open-Source-Python-Bibliothek für die schnelle Entwicklung von Anwendungen, die innovative Benutzeroberflächen verwenden, wie 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.
Es gibt auch das neue Projekt Android Scripting Environment (ASE / SL4A). Es sieht fantastisch aus und ist in native Android-Komponenten integriert.
Hinweis: Nicht mehr unter "aktive Entwicklung", aber einige Gabeln können sein.
Ja! : Android-Skriptumgebung
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)
import android as a;d=a.Android();d.startActivity('android.intent.action.VIEW',"http://books.google.com?q=%d"%int(d.scanBarcode()['result']['SCAN_RESULT']))
Pygame ist eine 2D-Spiel-Engine für Python (auf dem Desktop), die bei neuen Programmierern beliebt ist. Die Pygame-Untergruppe für Android beschreibt sich selbst als ...
... eine Portierung einer Teilmenge der Pygame-Funktionalität auf die Android-Plattform. Ziel des Projekts ist es, die Erstellung von Android-spezifischen Spielen zu ermöglichen und die Portierung von Spielen von PC-ähnlichen Plattformen auf Android zu vereinfachen.
Die Beispiele beinhalten ein komplettes Spiel, das als APK verpackt ist, was ziemlich interessant ist.
Mein Blog enthält Anweisungen und einen Patch zum Cross-Kompilieren von Python 2.7.2 für Android.
Ich habe auch Ignifuga mit offener Quelle , meine 2D-Game-Engine. Es basiert auf Python / SDL und ist für Android crosskompiliert. Selbst wenn Sie es nicht für Spiele verwenden, erhalten Sie möglicherweise nützliche Ideen aus dem Code- oder Builder-Dienstprogramm ( Schafer genannt , nach Tim ... Sie wissen, wer).
SL4A macht was Sie wollen. Sie können es einfach direkt von der Site auf Ihrem Gerät installieren und benötigen kein Root.
Es unterstützt eine Reihe von Sprachen. Python ist am ausgereiftesten. Standardmäßig wird Python 2.6 verwendet, es gibt jedoch einen 3.2-Port, den Sie stattdessen verwenden können. Ich habe diesen Port für alle möglichen Dinge auf einem Galaxy S2 verwendet und es hat gut funktioniert.
SL4A bietet einen Port ihrer android
Bibliothek für jede unterstützte Sprache. Die Bibliothek bietet eine Schnittstelle zur 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 die JavaScript-API sogar in Webansichten verwenden.
let droid = new Android();
droid.ttsSpeak("hello from js");
Für Benutzeroberflächen haben Sie drei Möglichkeiten:
Sie können Optionen mischen, um eine Webansicht für die Hauptoberfläche zu erhalten und weiterhin native Dialoge zu verwenden.
Es gibt ein Drittanbieterprojekt namens QPython . Es baut auf SL4A auf und wirft einige 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 in Android-Projekten, einschließlich Kivy, sodass es sich nicht nur um SL4A handelt.
Beachten Sie, dass QPython immer noch seine SL4A-Gabel entwickelt (allerdings nicht viel, um ehrlich zu sein). Das Hauptprojekt SL4A selbst ist so ziemlich tot.
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 Android-Entwicklungstools viel mehr als nur eine Programmiersprache enthalten. Viele der Android-Grafiken enthalten XML-Dateien, um die Anzeige zu konfigurieren, ähnlich wie bei HTML. Die integrierten Java-Objekte sind in dieses XML-Layout integriert, und es ist viel einfacher als das Schreiben Ihres Codes, 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) nicht so schnell sind. 200 MHz Prozessoren und RAM sind sehr begrenzt. Selbst in Java müssen Sie eine angemessene Menge an Umschreibungen vornehmen, um mehr Objekterstellung zu vermeiden, wenn Sie Ihre App perfekt reibungslos gestalten möchten. Python wird auf mobilen Geräten noch eine Weile zu langsam sein.
Ich wollte hinzufügen, was @JohnMudd über Kivy geschrieben hat. Seit der von ihm beschriebenen Situation sind Jahre vergangen, und Kivy hat sich erheblich weiterentwickelt.
Das größte Verkaufsargument von Kivy ist meiner Meinung nach die plattformübergreifende Kompatibilität. Sie können alles in jeder Desktop-Umgebung (Windows / * nix usw.) codieren und testen und dann Ihre App für eine Reihe verschiedener Plattformen verpacken, einschließlich Android, iOS, MacOS und Windows (obwohl Apps häufig nicht das native Erscheinungsbild haben).
Mit Kivys eigener KV- Sprache können Sie die GUI-Oberfläche einfach codieren und erstellen (es ist wie Java XML, aber anstelle von TextView usw. hat KV eine eigene ui.widgets
für eine ähnliche Übersetzung), was meiner Meinung nach recht einfach zu übernehmen ist.
Derzeit sind Buildozer und Python-for-Android die am meisten empfohlenen Tools zum Erstellen und Packen Ihrer Apps. Ich habe beide ausprobiert und kann mit Bestimmtheit sagen, dass das Erstellen von Android-Apps mit Python ein Kinderspiel ist. Ihre Führer sind auch gut dokumentiert.
iOS ist ein weiteres großes Verkaufsargument von Kivy. Sie können dieselbe Codebasis mit wenigen Änderungen verwenden, die über die kivy-ios Homebrew-Tools erforderlich sind, obwohl Xcode für den Build erforderlich ist, 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 kompiliert und in Xcode herumgespielt werden müssen, um einen erfolgreichen Build zu erzielen. Sie sind jedoch nicht allzu schwer zu lösen, und die Mitarbeiter der Kivy Google Group sind ebenfalls sehr hilfreich.
Trotz alledem sollten Benutzer mit guten Python-Kenntnissen kein Problem damit haben, die Grundlagen schnell zu erlernen.
Wenn Sie Kivy für ernstere Projekte verwenden, sind vorhandene Module möglicherweise unbefriedigend. Es gibt jedoch einige praktikable Lösungen. Mit dem (in Arbeit befindlichen) Pyjnius für Android und Pyobjus können Benutzer jetzt auf Java / Objective-C-Klassen zugreifen, um einige der nativen APIs zu steuern.
ScreenManager
sparen Sie durch diese Verwendung jede Menge Zeit. Ein Ratschlag ist auch, die Mailingliste zu lesen, eine Gruppe von Fachleuten, die bereit sind, Ihnen zu helfen.
Sie können die Termux- App verwenden, die eine POSIX-Umgebung für Android bereitstellt, um Python zu installieren.
Beachten Sie, dass apt install python
Python3 unter Termux installiert wird. Für Python2 müssen Sie verwenden apt install python2
.
Im Moment nicht und Sie hätten das Glück, Jython bald zum Arbeiten zu bringen. Wenn Sie jetzt mit Ihrer Entwicklung beginnen möchten, sollten Sie sich vorerst nur an Java halten.
Mit SL4A (das bereits in anderen Antworten erwähnt wurde) können Sie eine vollständige web2py- Instanz ausführen (andere Python-Webframeworks sind wahrscheinlich ebenfalls Kandidaten). Mit SL4A können Sie keine nativen UI-Komponenten (Schaltflächen, Bildlaufleisten usw. ) erstellen , aber WebViews werden unterstützt . Ein WebView ist im Grunde nichts anderes als ein abgespeckter Webbrowser, der auf eine feste Adresse zeigt. Ich glaube, die native Google Mail-App verwendet ein WebView, anstatt den regulären Widget-Weg zu gehen.
Diese Route hätte einige interessante Eigenschaften:
Ich benutze die QPython App . Es ist kostenlos und enthält einen Code-Editor, einen interaktiven Interpreter und einen Paketmanager, mit denen Sie Python-Programme direkt auf Ihrem Gerät erstellen und ausführen können.
Von der Python für Android- Site:
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, Bibliotheken und Ihrer Anwendung.
Chaquopy ist ein Plugin für das Gradle-basierte Build-System von Android Studio. Es konzentriert sich auf die enge Integration mit den Standard-Android-Entwicklungstools.
Es bietet vollständige APIs zum Aufrufen von Java aus Python oder Python aus Java , sodass der Entwickler die für jede Komponente seiner App am besten geeignete Sprache verwenden kann.
Es kann PyPI-Pakete automatisch 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 aus, einschließlich des nativen Toolkits für die Benutzeroberfläche ( Beispiel für eine reine Python-Aktivität ).
Dies ist ein kommerzielles Produkt, aber es ist kostenlos für Open Source und wird es immer bleiben.
(Ich bin der Schöpfer dieses Produkts.)
Noch ein Versuch: https://code.google.com/p/android-python27/
Dieser bettet den Python-Interpreter direkt in Ihre App apk ein.
Hier sind einige Tools aufgeführt, die auf der offiziellen Python-Website aufgeführt sind
Es gibt eine App namens QPython3 im Playstore, die sowohl zum Bearbeiten als auch zum Ausführen von Python-Skripten verwendet werden kann.
Eine andere App namens Termux, in der Sie Python mit dem Befehl installieren können
pkg install python
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 für das Qt 4 handelt.
Es gibt eine Plattform namens PyMob, auf der Apps nur in Python geschrieben werden können und der Compiler Tool-Flow (PyMob) sie in native Quellcodes für verschiedene Plattformen konvertiert.
Überprüfen Sie auch Python-für-Android
python-for-android is an open source build tool to let you package Python code into standalone android APKs. These can be passed around, installed, or uploaded to marketplaces such as the Play Store just like any other Android app. This tool was originally developed for the Kivy cross-platform graphical framework, but now supports multiple bootstraps and can be easily extended to package other types of Python apps for Android.
Probieren Sie Chaquopy A Python SDK für Android
Anddd ... BeeWare
BeeWare allows you to write your app in Python and release it on multiple platforms. No need to rewrite the app in multiple programming languages. It means no issues with build tools, environments, compatibility, etc.
Sie können Ihren Python-Code mit sl4a ausführen . sl4a unterstützt Python, Perl , JRuby , Lua , BeanShell, JavaScript, Tcl und Shell-Skripte.
Sie können sl4a Python-Beispiele lernen .
Sie können QPython verwenden :
Es verfügt über eine Python-Konsole, einen Editor sowie Paketverwaltung / Installationsprogramme
Es ist ein Open Source-Projekt mit Python 2- und Python 3-Implementierungen. Sie können die Quell- 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
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 die .a erhalten
Ich verwende dies derzeit, um rohes Python auf Android-Geräten auszuführen. Mit ein paar Änderungen an den Build-Dateien können Sie auch x86 und armeabi 64-Bit erstellen
Ich habe dies hier nicht gesehen, aber Sie können es jetzt mit Pyside und Qt tun, da Qt dank Necessitas auf Android funktioniert.
Es scheint im Moment ein ziemlicher Trottel zu sein, könnte aber irgendwann eine brauchbare Route sein ...
Eine weitere Option scheint pyqtdeploy zu sein, bei der die Dokumente zitiert werden:
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).
Laut der Bereitstellung der PyQt5-Anwendung auf Android über pyqtdeploy und Qt5 wird sie aktiv entwickelt, obwohl es schwierig ist, Beispiele für funktionierende Android-Apps oder ein Tutorial zum Cross-Kompilieren aller erforderlichen Bibliotheken auf Android zu finden. Es ist jedoch ein interessantes Projekt!
Schauen Sie sich BeeWare an . Zum Zeitpunkt der Beantwortung dieser Frage befindet sie sich noch in der frühen Entwicklung. Ziel ist es, mit Python native Apps für alle unterstützten Betriebssysteme, einschließlich Android, erstellen zu können.
Schauen Sie sich enaml-native an das das -Konzept auf Python anwendet.
Es ermöglicht Benutzern das Erstellen von Apps mit nativen Android-Widgets und bietet APIs zur Verwendung von Android- und Java-Bibliotheken aus Python.
Es lässt sich auch in Android-Studio integrieren und bietet einige der netten Entwicklungsfunktionen von React, wie das Neuladen von Code und das Remote-Debugging.