jython apk - Est-il possible d'exécuter Python sur Android?




tutorial kivy (21)

Kivy

Je souhaite publier ceci comme une extension de ce à quoi @JohnMudd a déjà répondu ( mais je vous prie de garder avec moi, car l'anglais n'est pas ma langue maternelle )

Cela fait des années depuis et Kivy a évolué pour devenir v1.9-dev. Le plus gros atout de Kivy, à mon avis, est sa compatibilité entre plates-formes. Vous pouvez coder et tester sous votre environnement local (Windows / * nix, etc.), vous pouvez également créer, déboguer et mettre en package votre application pour qu'elle s'exécute sur vos appareils Android / iOS / Mac / Windows.

Avec le propre langage KV Kivy, 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), ce qui est à mon avis assez facile à utiliser. adopter.

Actuellement, Buildozer et python-for-android sont les outils les plus recommandés pour créer / empaqueter vos applications. Je les ai essayés tous les deux et je peux affirmer avec certitude qu'ils facilitent grandement la création d'applications Android avec Python. 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.

De plus, iOS est un autre argument de vente important de Kivy, à condition que vous puissiez utiliser la même base de code avec des modifications kivy-ios pour pouvoir exécuter le test sur votre appareil iOS, via les kivy-ios Homebrew, bien que Xcode soit requis pour la construction avant l'exécution sur leurs périphériques (pour autant que je sache, le simulateur iOS dans Xcode ne fonctionne pas pour la version à architecture x86). Il y a aussi des problèmes de dépendance qui doivent être compilés manuellement et résolus dans Xcode pour réussir la compilation, mais ils ne seraient pas trop difficiles à résoudre et les gens de Kivy Google Group sont également d'une grande aide.

Tout ceci étant dit, les utilisateurs possédant de bonnes connaissances de Python ne devraient pas avoir de difficulté à acquérir les bases en quelques semaines (voire plusieurs jours) pour créer des applications simples.

Il est également intéressant de noter que vous pouvez regrouper (construire des recettes) vos modules Python avec la compilation afin que les utilisateurs puissent vraiment utiliser de nombreuses bibliothèques existantes que Python nous apporte, telles que Requests & PIL etc. via le support d'extension de Kivy .

Parfois, votre application nécessite des fonctionnalités qui vont au-delà de ce que Kivy peut offrir. Dans ces cas, il est nécessaire de recourir à des bibliothèques de logiciels externes. Étant donné la richesse de l'écosystème Python, il existe déjà de nombreuses bibliothèques de logiciels que vous pouvez simplement importer et utiliser immédiatement.

Le dernier mais non le moindre, si vous allez utiliser Kivy pour des projets plus sérieux / commerciaux, vous pouvez trouver que les modules existants ne sont pas satisfaisants. Il existe cependant des solutions viables, avec les "travaux en cours" de pyjnius pour Android et de pyobjus . Les utilisateurs peuvent désormais accéder aux classes Java / Objective-C via ces modules pour contrôler certaines des API natives.

D'après mon expérience à Kivy, il conviendra mieux aux programmeurs expérimentés Python et à certains programmeurs sérieux qui souhaitent un développement rapide ou une maintenance simple de la base de code. Il fonctionne bien sur plusieurs plates-formes, mais pas vraiment avec le sentiment natif .

J'espère que certains programmeurs d'applications Python trouveront ces informations utiles et commenceront à jeter un coup d'œil à Kivy. Cela ne peut que s'améliorer (avec plus de support et à mesure que les bibliothèques / modules sont portés) si l'intérêt de la communauté suscite un vif intérêt.

PS Je n’ai aucune relation avec Kivy, je suis simplement un programmeur qui aime vraiment l’idée d’amener le codage Python dans le développement mobile / multiplate-forme.

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

Cependant, il n’ya rien d’officiel sur Python sur Android, mais puisque Jython existe, existe-t-il un moyen de laisser le serpent et le robot travailler ensemble?


Une façon est d'utiliser Kivy :

Bibliothèque Python Open Source pour le développement rapide d’applications utilisant des interfaces utilisateur 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 plates-formes prises en charge.

Kivy Showcase app


Une autre option si vous recherchez 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 également supporter les versions 3.3 et 9c, 11c et 12.

C’est agréable de le télécharger, de lancer make et d’obtenir le .so ou le .a

J'utilise actuellement cela pour exécuter Python brut sur des appareils Android. Avec quelques modifications aux fichiers de construction, vous pouvez aussi créer x86 et armeabi 64 bit


"Le sous-ensemble Pygame pour Android est un portage d'un sous-ensemble de fonctionnalités de Pygame sur la plate-forme Android. L'objectif du projet est de permettre la création de jeux spécifiques à Android et de faciliter le transfert de jeux de plates-formes de type PC vers Android. . "

Les exemples incluent un jeu complet emballé dans un APK, ce qui est très intéressant.




Du site github.com/kivy/python-for-android :

Python pour Android est un projet visant à créer votre propre distribution Python, y compris les modules de votre choix, et à créer un apk comprenant Python, les bibliothèques et votre application.


Jetez un coup d'oeil à BeeWare . Au moment de répondre à cette question, il est encore au début du développement. 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.


Chaquopy

Chaquopy est un plugin pour le système de construction basé sur Gradle d'Android Studio. Il met l'accent sur une intégration étroite avec les outils de développement Android standard.

  • Il fournit des API complètes pour appeler Java à partir de Python ou Python à partir de Java , permettant ainsi au développeur d’utiliser le langage le mieux adapté à chaque composant de leur application.

  • Il peut télécharger automatiquement les packages PyPI et les construire dans une application, y compris des packages natifs sélectionnés tels que NumPy.

  • Il permet un accès complet à toutes les API Android à partir de Python, y compris le kit d'outils d'interface utilisateur native ( exemple d'activité pure-Python ).

Ceci est un produit commercial, mais il est gratuit pour une utilisation en source ouverte et restera toujours ainsi.

(Je suis le créateur de ce produit.)


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.

Cela peut sembler un peu compliqué pour le moment, mais pourrait éventuellement être un itinéraire viable ...

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


Vous pouvez exécuter votre code Python en utilisant sl4a . sl4a prend en charge les scripts Python, Perl , JRuby , Lua , BeanShell, JavaScript, Tcl et shell.

Vous pouvez apprendre des exemples python sl4a.



En utilisant SL4A (qui a déjà été mentionné par lui-même dans d'autres réponses), vous pouvez run une instance web2py complète (d'autres frameworks Web python sont également susceptibles d'être candidats). SL4A ne vous permet pas de créer des composants d'interface utilisateur natifs (boutons, barres de défilement, etc.), mais il prend en charge WebViews . Une WebView n’est fondamentalement rien d’autre qu’un navigateur Web rayé pointant vers une adresse fixe. Je pense que l'application Gmail native utilise une WebView au lieu de suivre la route habituelle du widget.

Cet itinéraire aurait des caractéristiques intéressantes:

  • Dans le cas de la plupart des frameworks Web Python, vous pouvez réellement développer et tester sans utiliser d'appareil Android ni d'émulateur Android.
  • Quel que soit le code Python que vous écrivez pour le téléphone, il peut également être placé sur un serveur Web public avec très peu (le cas échéant) de modifications.
  • Vous pouvez tirer parti de tous les trucs fous du Web: requêtes, HTML5, CSS3, etc.

J'utilise l'application QPython. Il a un éditeur, une console et vous pouvez exécuter vos programmes Python avec. L'application est gratuite et le lien est http://qpython.com/ .


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


Découvrez enaml-native qui reprend le concept enaml-native et l’applique à python.

Il permet aux utilisateurs de créer des applications avec des widgets Android natifs et fournit aux API l'utilisation de bibliothèques Android et Java à partir de Python.

Il s’intègre également à android-studio et partage quelques-unes des fonctionnalités de développement de rea telles que le rechargement de code et le débogage à distance.


Il y a aussi le nouveau projet Android Scripting Environment (ASE / SL4A). Cela a l'air génial, et il a une certaine intégration avec les composants natifs d'Android.

Remarque: ne figure plus sous "développement actif", mais certaines fourches peuvent l'être.


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 Open Source Ignifuga , mon moteur de jeu 2D, basé sur Python / SDL et compilant 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, d'après Tim ... vous savez qui).


Pas pour le moment et vous auriez de la chance de faire travailler Jython bientôt. Si vous envisagez de commencer votre développement maintenant, vous feriez mieux de vous en tenir à Java pour le moment.


Couche de script pour Android

SL4A fait ce que vous voulez. Vous pouvez facilement l'installer directement sur votre appareil à partir de leur site, sans avoir besoin de root.

Il supporte une gamme de langues. Python est le plus mature. Par défaut, il utilise Python 2.6, mais vous pouvez utiliser un port 3.2 . J'ai utilisé ce port pour toutes sortes de choses sur un Galaxy S2 et cela 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 à 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 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 menus et les dialogues génériques et natifs via l'API. Ceci est utile pour les dialogues de confirmation et autres entrées utilisateur de base.
  • Vous pouvez également ouvrir une vue Web à l'intérieur d'un script Python, puis utiliser HTML5 pour l'interface utilisateur. Lorsque vous utilisez des vues Web à partir de Python, vous pouvez faire passer des messages entre la vue Web et le processus Python qui l’a engendrée. L’UI ne sera pas native, mais c’est quand même une bonne option.
  • Il existe un certain support pour les interfaces utilisateur Android natives, mais je ne suis pas certain de la qualité de son fonctionnement. Je ne l'ai tout simplement jamais utilisé.

Vous pouvez combiner des options afin d'avoir une vue Web pour l'interface principale tout en utilisant les dialogues natifs.

QPython

Il existe un projet tiers appelé http://qpython.com/ . Il s’appuie sur SL4A et ajoute d’autres éléments utiles.

QPython vous donne une interface utilisateur plus agréable pour gérer votre installation et comprend un petit éditeur de code pour écran tactile, un shell Python et un shell PIP pour la gestion des packages. Ils ont également un port Python 3. Les deux versions sont disponibles gratuitement sur le Play Store. QPython regroupe également les bibliothèques d'un groupe de projets Python sur Android, y compris Kivy, de sorte qu'il ne s'agit pas uniquement de SL4A.

Notez que QPython développe toujours sa fourche de SL4A (bien que, pas beaucoup pour être honnête). Le projet principal de SL4A est quasiment mort.

Liens utiles


Il y a des informations plutôt utiles here .

Il couvre cinq types d'identification différents:

  1. IMEI (uniquement pour les appareils Android utilisant le téléphone; nécessite android.permission.READ_PHONE_STATE )
  2. Pseudo-Unique ID (pour tous les appareils Android)
  3. Android ID (peut être nul, peut changer lors de la réinitialisation d'usine, peut être modifié sur le téléphone enraciné)
  4. Adresse MAC MAC WLAN (nécessite android.permission.ACCESS_WIFI_STATE )
  5. Chaîne d’ adresse MAC MAC (appareils avec Bluetooth, nécessite android.permission.BLUETOOTH )




android python jython ase android-scripting