Y a-t-il un moyen de faire tourner Python sur Android? [fermé]
nous travaillons sur une version S60 et cette plate-forme dispose d'une API Python agréable.
Cependant, il n'y a rien d'officiel à propos de Python sur Android, mais depuis Python existe, il est un moyen de laisser le serpent et le robot travailler ensemble?
25 réponses
une façon est d'utiliser Kivy :
bibliothèque Open source Python pour le développement rapide des applications qui utilisent des interfaces utilisateurs innovantes, telles que les applications multi-touch.
Kivy fonctionne sous Linux, Windows, OS X, Android et iOS. Vous pouvez exécuter le même code [python] sur toutes les plateformes supportées.
il y a aussi le nouveau Android Scripting Environment (ASE/SL4A) projet. Il a l'air génial, et il a une certaine intégration avec les composants natifs Android.
Note: non plus sous "développement actif", mais certaines fourchettes peuvent l'être.
un exemple via Matt Cutts via SL4A -- "voici un scanner de code à barres écrit en six lignes de code Python:
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)
" le Pygame sous-ensemble pour Android est un port d'un sous-ensemble de la fonctionnalité Pygame pour la plate-forme Android. L'Objectif du projet est de permettre la création de jeux spécifiques à Android, et de faciliter le portage de jeux à partir de plateformes PC vers Android."
les exemples incluent un jeu complet emballé dans un APK, ce qui est assez intéressant.
j'ai posté des instructions et un patch pour la compilation croisée de Python 2.7.2 Pour Android, vous pouvez l'obtenir sur mon blog ici: http://mdqinc.com/blog/2011/09/cross-compiling-python-for-android/
EDIT: j'ai ouvert la source Ignifuga , mon moteur de jeu 2D, il est basé sur Python/SDL et il croise des compilations pour Android. Même si vous ne l'utilisez pas pour les jeux, vous pourriez obtenir des idées utiles à partir du code et de l'utilitaire builder (nommé Schafer, après Tim...vous savez qui).
Couche de programmation pour Android
SL4A est-ce que vous voulez. Vous pouvez facilement l'installer directement sur votre appareil à partir de leur site, et n'avez pas besoin de root.
Il prend en charge un éventail de langues. Python est le plus mature. Par défaut, il utilise Python 2.6, mais il y a un port 3.2 que vous pouvez utiliser à la place. J'ai utilisé ce port pour toutes sortes de choses sur un Galaxy S2 et ça a bien fonctionné.
API
SL4A fournit un port de leur bibliothèque android
pour chaque langue prise en charge. La bibliothèque fournit une interface avec L'API Android sous-jacente via un seul objet Android
.
from android import Android
droid = Android()
droid.ttsSpeak('hello world') # example using the text to speech facade
chaque langue a à peu près la même API. Vous pouvez même utiliser L'API JavaScript dans webviews.
let droid = new Android();
droid.ttsSpeak("hello from js");
Interfaces Utilisateur
pour les interfaces utilisateur, vous avez trois options:
- vous pouvez facilement utiliser les dialogues génériques, natifs et les menus à travers le API. Ceci est bon pour les dialogues de confirmation et d'autres entrées de base de l'utilisateur.
- vous pouvez aussi ouvrir un webview à partir d'un script Python, puis utiliser HTML5 pour l'interface utilisateur. Lorsque vous utilisez webviews de Python, vous pouvez passer messages de va-et-vient, entre le webview et le processus Python qui donné naissance. L'UI ne sera pas natif, mais il est encore un bonne option pour avoir.
- Il ya certains prise en charge pour les interfaces utilisateur natives Android, mais je ne suis pas c'est sûr que ça marche bien, mais je ne l'ai jamais utilisé.
vous pouvez mélanger des options, de sorte que vous pouvez avoir un webview pour l'interface principale, et toujours utiliser des dialogues natifs.
QPython
il existe un projet tiers appelé QPython . Il s'appuie sur SL4A, et jette d'autres trucs utiles.
QPython vous donne une interface utilisateur plus agréable pour gérer votre installation, et inclut un petit éditeur de code tactile, un shell Python, et un shell PIP pour la gestion des paquets. Ils ont aussi un port Python 3. Les deux versions sont disponibles gratuitement sur le Play Store. QPython rassemble également des bibliothèques d'un tas de Python sur des projets Android, y compris Kivy, donc ce n'est pas seulement SL4A.
notez que QPython encore développer leur fourche de SL4A (bien, pas beaucoup pour être honnête). Le projet SL4A lui-même est pratiquement mort.
Liens Utiles
- SL4A Projet (maintenant sur GitHub): https://github.com/damonkohler/sl4a
- SL4A Python 3 Port: https://code.google.com/p/python-for-android/wiki/Python3
- QPython Project: http://qpython.com
comme un Python amant et programmeur Android, je suis triste de dire que ce n'est pas vraiment une bonne façon d'aller. Il y a deux problèmes.
un problème est qu'il ya beaucoup plus qu'un simple langage de programmation pour les outils de développement Android. Beaucoup de graphiques Android impliquent des fichiers XML pour configurer l'affichage, similaire à HTML. Les objets java intégrés sont vraiment intégrés avec cette mise en page XML, et c'est beaucoup plus facile que d'écrire les vôtres. code pour passer de la logique au bitmap.
l'autre problème est que le G1 (et probablement d'autres appareils Android pour le futur proche) sont vraiment pas si rapide. Processeurs de 200 MHz, et la RAM est très limitée. Même en Java, vous devez faire une quantité décente de réécriture-pour-éviter-plus-la création d'objet si vous voulez rendre votre application parfaitement lisse. Python va être trop lent pour un moment encore sur les appareils mobiles.
pas pour le moment et vous seriez chanceux de faire travailler Jython bientôt. Si vous prévoyez de commencer votre développement maintenant, vous seriez mieux de simplement rester en Java pour l'instant.
en utilisant SL4A (qui a déjà été mentionné par lui-même dans d'autres réponses) vous pouvez exécuter a full-blown web2py instance (autre cadres web python sont des candidats probables ainsi). SL4A ne vous permet pas de faire des composants natifs de L'interface utilisateur (boutons, barres de défilement, etc.), mais il supporte WebViews . Un WebView n'est rien de plus qu'un navigateur Web rayé pointé vers un adresse fixe. Je crois que L'application native Gmail utilise un WebView au lieu d'utiliser la route widget régulière.
cette route aurait quelques caractéristiques intéressantes:
- dans le cas de la plupart des cadres web python, vous pouvez en fait développer et tester sans utiliser un appareil android ou un émulateur android.
- quel que soit le code Python que vous finissez par écrire pour le téléphone pourrait également être mis sur un serveur web public avec très peu (si toute) la modification.
- vous pourriez profiter de tous les trucs web dingues là-bas: requête, HTML5, CSS3, etc.
Kivy
je veux poster ceci comme une extension de ce que @JohnMudd a déjà répondu ( mais s'il vous plaît, supportez-moi car l'anglais n'est pas ma première langue )
il a été années depuis lors, et Kivy a évolué à v1.9-dev. Le point de vente le plus important de Kivy, à mon avis, est sa compatibilité multiplateforme. Vous pouvez coder et tester dans votre environnement local (Windows / * nix etc.), vous pouvez également construire, déboguer et Packager votre application pour l'exécuter sur vos appareils Android/iOS/Mac/Windows.
avec le propre langage de Kivy KV , vous pouvez coder et construire l'interface GUI facilement (c'est tout comme Java XML, mais plutôt que TextView etc., KV a son propre ui.widgets
pour la traduction similaire), qui est à mon avis assez facile à adopter.
actuellement Buildozer et python-pour-android sont les plus recommandés outils pour construire/emballage de vos applications. J'ai essayé les deux et je peux dire fermement qu'ils font construire des applications Android avec Python un jeu d'enfant. Les utilisateurs qui se sentent à l'aise dans l'invite console/terminal/commande ne devraient pas avoir de problèmes à les utiliser, et leurs guides sont bien documentés.
en outre, iOS est un autre point de Vente important de Kivy, à condition que vous pouvez utiliser la même base de code avec peu les modifications nécessaires pour tester-exécuter sur votre appareil iOS, via les outils kivy-ios Homebrew, bien que Xcode soit nécessaire pour la construction avant d'exécuter sur leurs appareils (AFAIK le simulateur iOS en Xcode ne fonctionne actuellement pas pour la construction x86-architecture). Il ya aussi quelques problèmes de dépendance qui doivent être compilés manuellement et bricolé avec dans Xcode pour avoir une construction réussie, mais ils ne seraient pas trop difficiles à résoudre et les gens dans Kivy Google Group sont vraiment utiles.
avec tout ce qui est dit, les utilisateurs avec de bonnes connaissances en Python ne devraient pas avoir de problème à récupérer les bases en quelques semaines (si ce n'est pas en jours) pour construire quelques applications simples.
vaut également la peine de mentionner est que vous pouvez regrouper (construire des recettes) vos modules Python avec la construction afin que les utilisateurs peuvent vraiment faire usage de nombreuses bibliothèques existantes Python nous apporter, comme demandes & PIL etc. par le biais de Kivy est le support de l'extension .
parfois, votre application nécessite des fonctionnalités qui vont au-delà des portée de ce que Kivy peut fournir. Dans ces cas, il est nécessaire de recourir à des bibliothèques logicielles externes. Compte tenu de la richesse de la Écosystème Python, il y a déjà beaucoup de logiciels bibliothèques que vous pouvez simplement importer et utiliser immédiatement.
le dernier mais pas le moindre, si vous allez utiliser Kivy pour des projets plus sérieux/commerciaux, vous pouvez trouver les modules existants insatisfaisants. Il existe cependant quelques solutions réalisables, avec le "travail en cours" de pyjnius pour Android, et pyobjus . Les utilisateurs peuvent maintenant accéder aux classes Java/Objective-C à travers ces modules pour contrôler certaines des API natives.
mon expérience au Kivy est qu'il trouvera son meilleur ajustement avec des programmeurs Python expérimentés et certains programmeurs sérieux qui veulent un développement rapide ou une simple maintenance de base de code. Il fonctionne bien sur plusieurs plateformes, mais pas vraiment avec le natif sentiment.
j'espère que certains programmeurs D'applications Python trouveront cette information utile et commenceront à jeter un oeil à Kivy. Il ne peut que s'améliorer (avec plus de soutien et de bibliothèques/modules portage) si il y a un grand intérêt de la communauté.
P. S .. je n'ai aucune relation avec Kivy, je suis simplement un programmeur qui aime vraiment l'idée d'apporter du plaisir de codage Python pour le développement mobile/multi-plateforme.
j'utilise L'application QPython. Il dispose d'un éditeur, d'une console, et vous pouvez exécuter vos programmes Python. L'application est gratuite, et le lien est http://qpython.com/ .
De la Python pour android site:
Python pour android est un projet pour créer votre propre distribution Python incluant les modules que vous voulez, et créer un apk incluant python, libs, et votre application.
encore une autre tentative: https://code.google.com/p/android-python27/
celui-ci a intégré directement le Python interpreter dans votre application.
Vous pouvez utiliser Termux :
notez que apt installe python install python 3. pour python 2, vous devez appeler apt install python2.
quelques démos ici: https://www.youtube.com/watch?v=fqqsl72mASE
et aussi la page github: https://github.com/termux
il y a aussi python-on-a-chip qui tourne possiblement mosync: google group
vous pouvez utiliser QPython :
il possède une Console Python, un éditeur, ainsi que des installateurs / gestionnaires de paquets
c'est un projet open source avec des implémentations Python 2 et Python 3. Vous pouvez télécharger la source et L'Android .fichiers apk directement à partir de github.
QPython 2: https://github.com/qpython-android/qpython/releases
QPython 3: https://github.com/qpython-android/qpython3/releases
Chaquopy
Chaquopy est un plugin pour le système de construction Gradle basé sur Android Studio. Il se concentre sur étroite intégration avec les outils standard de développement Android.
-
il fournit des API complètes pour appeler Java à partir de Python ou Python à partir de Java , permettant au développeur d'utiliser le langage le plus approprié pour chaque composante de leur application.
-
il peut télécharger automatiquement paquets PyPI et les construire dans une application, y compris les paquets natifs sélectionnés tels que NumPy.
-
il permet un accès complet à tous les API Android de Python, y compris le natif interface toolkit ( exemple d'activité pure Python ).
This est un produit commercial, mais il est gratuit pour open-source utilisation et en sera toujours ainsi.
(je suis le créateur de ce produit.)
il y a une application appelée QPython3 dans playstore qui peut être utilisée pour éditer et exécuter des scripts python.
une autre application appelée Termux dans laquelle vous pouvez installer python en utilisant la commande
pkg install python
N'a pas vu cela posté ici, mais vous pouvez le faire avec Pyside et Qt maintenant que Qt fonctionne sur Android grâce à Necessitas.
il semble tout à fait un kludge à l'heure actuelle, mais pourrait être un itinéraire viable éventuellement...
une autre option si vous cherchez 3.4.2 ou 3.5.1 est cette archive sur GitHub.
Python3-Android 3.4.2 ou Python3-Android 3.5.1
il supporte actuellement Python 3.4.2 ou 3.5.1 et la version 10d du NDK. Il peut aussi supporter 3.3 et 9c, 11c et 12
il est agréable dans ce que vous téléchargez simplement, exécuter faire et vous obtenez le .alors ou la.a
Je l'utilise actuellement pour exécuter du Python brut sur des appareils android. Avec quelques modifications aux fichiers de compilation, vous pouvez aussi faire x86 et armeabi 64 bits
une autre option semble être pyqtdeploy qui cite le docs est:
un outil qui, en conjonction avec d'autres outils fournis avec Qt, permet le déploiement des applications PyQt4 et PyQt5 écrites avec Python v2.7 ou Python v3.3 ou plus. Il soutient le déploiement à l'ordinateur de bureau les plates-formes (Linux, Windows et OS X) et les plates-formes mobiles (iOS et Android.)
selon déployer L'application PyQt5 pour Android via pyqtdeploy et Qt5 il est activement développé, bien qu'il soit difficile de trouver des exemples de travail Applications Android ou tutoriel sur la façon de compiler toutes les bibliothèques nécessaires à Android. C'est un projet intéressant de garder à l'esprit!
Check out enaml-native qui prend le concept react-native et l'applique à python.
permet aux utilisateurs de créer des applications avec des widgets natifs Android et fournit des API pour utiliser les bibliothèques android et java à partir de python.
il s'intègre également à android-studio et partage quelques-unes des fonctionnalités de react comme le rechargement de code et le débogage à distance.