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?

1961
demandé sur Pehlaj 2008-09-19 17:21:12

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.

Kivy Vitrine app

853
répondu JohnMudd 2014-08-31 22:09:40

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.

316
répondu Heat Miser 2018-02-19 04:49:05

Oui!

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)
189
répondu unmounted 2017-11-09 16:02:25

il y a aussi SL4A écrit en gros par les employés de Google.

79
répondu Rab Ross 2017-08-16 08:51:58

" 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.

78
répondu muriloq 2017-02-01 10:09:17

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).

68
répondu gabomdq 2012-02-16 17:10:06

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

66
répondu Carl Smith 2018-05-09 20:03:26

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.

59
répondu lacker 2014-08-31 22:11:05

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.

35
répondu Ilya Kochetov 2013-03-23 14:58:45

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.
33
répondu gdw2 2016-01-26 05:48:09

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.

32
répondu Anzel 2018-02-08 03:56:33

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

22
répondu kyle k 2015-01-13 00:35:57

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.

19
répondu gdw2 2012-01-09 04:46:53

encore une autre tentative: https://code.google.com/p/android-python27/

celui-ci a intégré directement le Python interpreter dans votre application.

16
répondu e-satis 2012-05-09 15:44:49

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

15
répondu Adrian Stanculescu 2017-01-20 11:36:47

vous pouvez exécuter votre code Python en utilisant sl4a . sl4a supporte Python, Perl , JRuby , Lua , BeanShell, JavaScript, Tcl , et shell script.

vous pouvez apprendre sl4a exemples de Python .

11
répondu Hitul 2015-01-13 00:34:26

il y a aussi python-on-a-chip qui tourne possiblement mosync: google group

11
répondu fooba 2016-02-15 13:35:25

vous pouvez utiliser QPython :

il possède une Console Python, un éditeur, ainsi que des installateurs / gestionnaires de paquets

http://qpython.com/

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

9
répondu ode2k 2016-09-16 02:41:18

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.)

9
répondu mhsmith 2018-02-16 17:12:15

il y a une application appelée QPython3 dans playstore qui peut être utilisée pour éditer et exécuter des scripts python.

Playstore lien

une autre application appelée Termux dans laquelle vous pouvez installer python en utilisant la commande

pkg install python

Playstore Lien

9
répondu Pzy64 2018-04-11 07:59:54

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...

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

8
répondu radix07 2014-10-06 14:59:14

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

8
répondu GR Envoy 2016-07-11 13:10:34

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!

6
répondu Andrzej Pronobis 2017-05-23 12:18:36

regardez BeeWare . Au moment de répondre à cette question, elle n'en est qu'à ses débuts. Son objectif est de pouvoir créer des applications natives avec Python pour tous les systèmes d'exploitation pris en charge, y compris Android.

3
répondu DrawT 2018-01-12 18:56:16

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.

3
répondu frmdstryr 2018-08-20 16:59:32