Question Existe-t-il un moyen d'exécuter Python sur Android? [fermé]


Nous travaillons sur un S60 version et cette plate-forme a une belle API Python.

Cependant, il n'y a rien d'officiel à propos de Python sur Android, mais depuis Jython existe, existe-t-il un moyen de laisser le serpent et le robot travailler ensemble?


1885
2017-09-19 13:21


origine


Réponses:


Une façon est d'utiliser Kivy:

Bibliothèque Python open source pour un développement rapide des applications   qui utilisent des interfaces utilisateur innovantes, telles que des 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 plates-formes prises en charge.

Application Kivy Showcase 


818
2017-11-18 21:49



Il y a aussi le nouveau Environnement de script Android (ASE / SL4A). Il semble génial, et il a une certaine intégration avec les composants Android natifs.

Note: ne plus sous "développement actif", mais certaines fourchettes peuvent l'être.


302
2018-06-10 05:24



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)

180
2018-06-10 05:13



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


73
2018-05-26 09:21



"Le Pygame Subset pour Android est un port d'un sous-ensemble de la fonctionnalité Pygame à la plate-forme Android. Le but du projet est de permettre la création de jeux spécifiques à Android, et de faciliter le portage de jeux de plates-formes PC vers Android. "

Les exemples incluent un jeu complet emballé dans un fichier APK, ce qui est assez intéressant.


71
2018-01-28 12:18



J'ai posté des instructions et un correctif 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 en sourced Ignifuga, mon 2D Game Engine, c'est basé sur Python / SDL et il compile pour Android. Même si vous ne l'utilisez pas pour les jeux, vous pourriez obtenir des idées utiles du code et de l'utilitaire de construction (nommé Schafer, après Tim ... vous savez qui).


63
2017-10-12 13:49



Scripting Layer pour Android

SL4A fait ce que tu veux. Vous pouvez facilement l'installer directement sur votre appareil à partir de leur site, et n'avez pas besoin de root.

Il prend en charge une gamme de langues. Python est le plus mature. Par défaut, il utilise Python 2.6, mais il y a un 3.2 port 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 android bibliothèque pour chaque langue prise en charge. La bibliothèque fournit une interface à l'API Android sous-jacente via un Android objet.

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 les vues Web.

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

Les interfaces des utilisateurs

Pour les interfaces utilisateur, vous avez trois options:

  • Vous pouvez facilement utiliser les dialogues et menus natifs génériques à API Ceci est utile pour les dialogues de confirmation et d'autres entrées utilisateur de base.
  • Vous pouvez également ouvrir une vue Web depuis un script Python, puis utiliser HTML5 pour l'interface utilisateur. Lorsque vous utilisez Webviews à partir de Python, vous pouvez passer messages entre le WebView et le processus Python engendré. L'interface utilisateur ne sera pas native, mais c'est toujours une bonne option pour avoir.
  • Il y a certains support pour les interfaces utilisateur natives Android, mais je ne suis pas bien sûr comment cela fonctionne; Je ne l'ai jamais utilisé.

Vous pouvez mélanger des options, de sorte que vous puissiez avoir une vue Web pour l'interface principale et utiliser des dialogues natifs.

QPython

Il y a un projet de tiers nommé QPython. Il s'appuie sur SL4A, et jette d'autres choses utiles.

QPython vous offre une meilleure interface utilisateur pour gérer votre installation et inclut un petit éditeur de code à écran 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 regroupe é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 continue de développer sa fourche de SL4A (mais pas grand-chose pour être honnête). Le projet principal de SL4A est à peu près mort.

Liens utiles


57
2018-03-19 15:45



Comme un Python Amant et programmeur Android, je suis triste de dire que ce n'est pas vraiment une bonne voie à suivre. Il y a deux problèmes.

Un problème est qu'il y a 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 à cette mise en page XML, et il est beaucoup plus facile d'écrire votre propre code pour passer de la logique à l'image bitmap.

L'autre problème est que le G1 (et probablement d'autres appareils Android dans un futur proche) n'est vraiment pas aussi rapide. Les processeurs à 200 MHz et la RAM sont très limités. Même en Java, vous devez faire une bonne quantité de réécriture pour éviter la création d'objets si vous voulez rendre votre application parfaitement fluide. Python va être trop lent pour un moment encore sur les appareils mobiles.


56
2017-11-01 20:29



Pas pour le moment et vous auriez de la chance de faire fonctionner Jython bientôt. Si vous avez l'intention de démarrer votre développement maintenant, vous feriez mieux de vous contenter de Java pour le moment.


32
2017-09-19 13:26



En utilisant SL4A (qui a déjà été mentionné par lui-même dans d'autres réponses), vous pouvez courir un véritable web2py instance (autre frameworks web python sont également des candidats potentiels). SL4A ne vous permet pas de faire des composants d'interface utilisateur natifs (boutons, barres de défilement, etc.), mais il prend en charge WebViews. Un WebView est fondamentalement rien de plus qu'un navigateur Web rayé dirigé vers une adresse fixe. Je crois que l'application Gmail native utilise un WebView au lieu de suivre la route habituelle du widget.

Cette route aurait quelques caractéristiques intéressantes:

  • Dans le cas de la plupart des frameworks web python, vous pouvez réellement développer et tester sans utiliser un périphérique Android ou un émulateur Android.
  • Quel que soit le code Python que vous finissez par écrire pour le téléphone, vous pouvez également le mettre sur un serveur Web public avec très peu de modifications (le cas échéant).
  • Vous pouvez tirer parti de toutes les fonctionnalités Web délirantes: requête, HTML5, CSS3, etc.

29
2018-01-06 14:34



Kivy


Je veux poster ceci comme une extension de ce @JohnMudd a déjà répondu (mais s'il vous plaît gardez avec moi comme l'anglais n'est pas ma langue maternelle)

Il a été des années depuis lors, et Kivy a évolué pour v1.9-dev. Selon moi, le principal argument de vente de Kivy est sa compatibilité multiplateforme. Vous pouvez coder et tester sous votre environnement local (Windows / * nix etc.), vous pouvez également créer, déboguer et empaqueter votre application pour l'exécuter sur vos appareils Android / iOS / Mac / Windows.

Avec le propre de Kivy KV langage, vous pouvez facilement coder et construire l'interface graphique (c'est 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 outils les plus recommandés pour créer / emballer vos applications. Je les ai essayés tous les deux et peux fermement dire qu'ils font la construction d'applications Android avec Python un jeu d'enfant. Les utilisateurs qui se sentent à l'aise dans leur console / terminal / invite de commande ne devraient avoir aucun problème à les utiliser, et leurs guides sont également bien documentés.

En outre, iOS est un autre argument de vente de Kivy, à condition que vous puissiez utiliser la même base de code avec peu de modifications requises pour effectuer des tests sur votre appareil iOS, via kivy-ios Les outils Homebrew, bien que Xcode soit requis pour la compilation avant de tourner sur leurs appareils (AFAIK le simulateur iOS dans Xcode ne fonctionne pas actuellement pour la construction de l'architecture x86). Il y a aussi quelques problèmes de dépendance qui doivent être compilés manuellement et manipulés avec Xcode pour avoir une compilation réussie, mais ils ne seraient pas trop difficiles à résoudre et les gens dans Kivy Google Group sont vraiment utiles aussi.

En fin de compte, les utilisateurs ayant de bonnes connaissances en Python ne devraient pas avoir de problème à assimiler les bases en quelques semaines (voire plusieurs jours) pour créer des applications simples.

Il est également intéressant de mentionner que vous pouvez regrouper (construire des recettes) vos modules Python avec la construction afin que les utilisateurs puissent vraiment utiliser de nombreuses bibliothèques existantes que Python nous apporte, comme Requêtes & PIL etc. à travers Le support d'extension de Kivy.

Parfois, votre application nécessite des fonctionnalités qui dépassent les   portée de ce que Kivy peut offrir. Dans ces cas, il est nécessaire de   recourir à des bibliothèques de logiciels 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 des modules existants pas satisfaisants. Il y a cependant quelques solutions réalisables, avec le "work in progress" de pyjnius pour Android, et pyobjus. Les utilisateurs peuvent désormais accéder aux classes Java / Objective-C via ces modules pour contrôler certaines des API natives.

Mon expérience avec Kivy est qu'il trouvera son meilleur ajustement avec les 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 plates-formes, mais pas vraiment avec le originaire de sentiment.

J'espère que certains programmeurs d'application Python trouveront cette information utile et commenceront à regarder Kivy. Il ne peut que s'améliorer (avec plus de soutien et à mesure que les bibliothèques / modules sont portés) s'il y a un grand intérêt de la part de la communauté.

P.S. Je n'ai aucun lien avec Kivy, je suis simplement un programmeur qui aime vraiment l'idée d'apporter du code Python amusant au développement mobile / multiplateforme.


28
2018-01-13 02:08