Réponses:
Une façon consiste à utiliser Kivy :
Bibliothèque Python open source pour le développement rapide d'applications qui utilisent des interfaces utilisateur innovantes, telles que les applications multi-touch.
Kivy fonctionne sur Linux, Windows, OS X, Android et iOS. Vous pouvez exécuter le même code [python] sur toutes les plateformes prises en charge.
Il y a aussi le nouveau projet Android Scripting Environment (ASE / SL4A). Il a l'air génial et il a une certaine intégration avec les composants Android natifs.
Remarque: n'est plus sous "développement actif", mais certaines fourches peuvent l'être.
Oui! : Environnement de script Android
Un exemple via Matt Cutts via SL4A - "voici un scanner de codes à 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)
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 est un moteur de jeu 2D pour Python (sur ordinateur) populaire auprès des nouveaux programmeurs. Le sous-ensemble Pygame pour Android se décrit comme ...
... un port d'un sous-ensemble de fonctionnalités Pygame vers la plateforme Android. L'objectif du projet est de permettre la création de jeux spécifiques à Android et de faciliter le portage de jeux depuis des plateformes de type PC vers Android.
Les exemples incluent un jeu complet emballé sous forme d'APK, ce qui est assez intéressant.
Mon blog contient des instructions et un correctif pour la compilation croisée de Python 2.7.2 pour Android.
J'ai également ouvert Ignifuga , mon moteur de jeu 2D. Il est basé sur Python / SDL et compile de manière croisée pour Android. Même si vous ne l'utilisez pas pour les jeux, vous pourriez obtenir des idées utiles du code ou de l'utilitaire de création (nommé Schafer , d'après Tim ... vous savez qui).
SL4A fait ce que vous voulez. Vous pouvez facilement l'installer directement sur votre appareil depuis leur site, et n'avez pas besoin de root.
Il prend en charge une gamme de langues. Le python est le plus mature. Par défaut, il utilise Python 2.6, mais il existe 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 cela a bien fonctionné.
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 seul 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");
Pour les interfaces utilisateur, vous avez trois options:
Vous pouvez mélanger les options afin d'avoir une vue Web pour l'interface principale et toujours utiliser des dialogues natifs.
Il existe un projet tiers nommé QPython . Il s'appuie sur SL4A et ajoute d'autres éléments utiles.
QPython vous offre une interface utilisateur plus agréable pour gérer votre installation et comprend un petit éditeur de code à é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 tas de Python sur des projets Android, y compris Kivy, donc ce n'est pas seulement SL4A.
Notez que QPython développe toujours sa fourchette de SL4A (cependant, pas beaucoup pour être honnête). Le projet SL4A principal lui-même est quasiment mort.
En tant qu'amoureux de Python et programmeur Android, je suis triste de dire que ce n'est pas une bonne façon de procéder. Il y a deux problèmes:
Un problème est qu'il existe bien 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 au HTML. Les objets java intégrés sont intégrés à cette disposition XML, et c'est beaucoup plus facile que d'écrire votre code pour passer de la logique au bitmap.
L'autre problème est que le G1 (et probablement d'autres appareils Android dans un avenir proche) ne sont pas aussi rapides. Les processeurs 200 MHz et la RAM sont très limités. Même en Java, vous devez effectuer une quantité décente de réécriture pour éviter plus de création d'objet si vous voulez rendre votre application parfaitement fluide. Python va être trop lent pendant un certain temps sur les appareils mobiles.
Je voulais ajouter à ce que @JohnMudd a écrit sur Kivy. Cela fait des années que la situation qu'il a décrite n'a pas changé et Kivy a considérablement évolué.
Le plus gros argument de vente de Kivy, à mon avis, est sa compatibilité multiplateforme. Vous pouvez tout coder et tester tout en utilisant n'importe quel environnement de bureau (Windows / * nix, etc.), puis empaqueter votre application pour une gamme de plates-formes différentes, y compris Android, iOS, MacOS et Windows (bien que les applications manquent souvent de l'aspect et de la convivialité natifs).
Avec le propre langage KV de Kivy , vous pouvez facilement coder et construire l'interface GUI (c'est comme Java XML, mais plutôt que TextView etc., KV a le sien ui.widgets
pour une traduction similaire), ce qui est à mon avis assez facile à adopter.
Actuellement, Buildozer et python-for-android sont les outils les plus recommandés pour créer et empaqueter vos applications. Je les ai essayés tous les deux et je peux affirmer fermement qu'ils font de la création d'applications Android avec Python un jeu d'enfant. Leurs guides sont également bien documentés.
iOS est un autre gros argument de vente de Kivy. Vous pouvez utiliser la même base de code avec quelques modifications requises via les outils kivy-ios Homebrew, bien que Xcode soit requis pour la construction, avant de s'exécuter sur leurs appareils (AFAIK, le simulateur iOS dans Xcode ne fonctionne pas actuellement pour la construction à architecture x86) . Il y a aussi des problèmes de dépendance qui doivent être compilés et manipulés manuellement dans Xcode pour avoir une construction réussie, mais ils ne seraient pas trop difficiles à résoudre et les gens de Kivy Google Group sont également très utiles.
Cela étant dit, les utilisateurs ayant une bonne connaissance de Python ne devraient pas avoir de problème à comprendre rapidement les bases.
Si vous utilisez Kivy pour des projets plus sérieux, vous pouvez trouver les modules existants insatisfaisants. Il existe cependant des solutions viables. Avec (en cours) pyjnius pour Android et pyobjus , les utilisateurs peuvent désormais accéder aux classes Java / Objective-C pour contrôler certaines des API natives.
ScreenManager
car cela vous fera gagner des tonnes de temps. Un conseil est également de lire leur liste de diffusion, un groupe de personnes compétentes qui sont là pour vous aider.
Vous pouvez utiliser l' application Termux , qui fournit un environnement POSIX pour Android, pour installer Python.
Notez que apt install python
va installer Python3 sur Termux. Pour Python2, vous devez utiliser apt install python2
.
Pas pour le moment et vous auriez la chance de faire fonctionner Jython bientôt. Si vous prévoyez de commencer votre développement maintenant, vous feriez mieux de vous en tenir à 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 une instance Web2py complète (d'autres 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 les WebViews . Une WebView n'est rien de plus qu'un navigateur Web rayé pointant vers une adresse fixe. Je pense que l'application native Gmail utilise une WebView au lieu de suivre la route normale des widgets.
Cette route aurait des caractéristiques intéressantes:
J'utilise l'application QPython . Il est gratuit et comprend un éditeur de code, un interpréteur interactif et un gestionnaire de packages, vous permettant de créer et d'exécuter des programmes Python directement sur votre appareil.
Depuis le site Python pour Android :
Python pour Android est un projet pour créer votre propre distribution Python, y compris les modules que vous souhaitez, et créer un apk comprenant python, des bibliothèques et votre application.
Chaquopy est un plugin pour le système de construction basé sur Gradle d'Android Studio. Il se concentre 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 au développeur d'utiliser le langage le mieux adapté à chaque composant de son application.
Il peut télécharger automatiquement les packages PyPI et les intégrer 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 la boîte à outils de l'interface utilisateur native ( exemple d'activité pure-Python ).
Il s'agit d'un produit commercial, mais il est gratuit pour une utilisation open-source et le restera toujours.
(Je suis le créateur de ce produit.)
Encore une autre tentative: https://code.google.com/p/android-python27/
Celui-ci intègre directement l'interpréteur Python dans votre apk d'application.
Voici quelques outils répertoriés sur le site officiel de Python
Il existe une application appelée QPython3 dans playstore qui peut être utilisée à la fois pour éditer et exécuter un script python.
Une autre application appelée Termux dans laquelle vous pouvez installer python en utilisant la commande
pkg install python
Si vous souhaitez développer des applications, il existe 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.
Vous pouvez également vérifier PySide pour Android , qui est en fait des liaisons Python pour Qt 4.
Il existe une plate-forme appelée PyMob où les applications peuvent être écrites uniquement en Python et le flux d'outils du compilateur (PyMob) les convertit en codes sources natifs pour diverses plates-formes.
Vérifiez également python-for-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.
Essayez Chaquopy A Python SDK pour 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.
Vous pouvez utiliser QPython :
Il a une console Python, un éditeur, ainsi que des gestionnaires / installateurs de packages
Il s'agit d'un projet open source avec des implémentations Python 2 et Python 3. Vous pouvez télécharger la source et les fichiers Android .apk directement depuis github.
QPython 2: https://github.com/qpython-android/qpython/releases
QPython 3: https://github.com/qpython-android/qpython3/releases
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 prend actuellement en charge Python 3.4.2 ou 3.5.1 et la version 10d du NDK. Il peut également prendre en charge 3.3 et 9c, 11c et 12
C'est bien parce que vous le téléchargez simplement, lancez make et vous obtenez le .so ou le .a
Je l'utilise actuellement pour exécuter Python brut sur des appareils Android. Avec quelques modifications aux fichiers de construction, vous pouvez également créer x86 et armeabi 64 bits
Je n'ai pas vu cela publié ici, mais vous pouvez le faire avec Pyside et Qt maintenant que Qt fonctionne sur Android grâce à Necessitas.
Cela semble un peu compliqué pour le moment, mais pourrait éventuellement être une voie viable ...
Une autre option semble être pyqtdeploy qui citant les documents est:
un outil qui, conjointement avec d'autres outils fournis avec Qt, permet le déploiement d'applications PyQt4 et PyQt5 écrites avec Python v2.7 ou Python v3.3 ou version ultérieure. Il prend en charge le déploiement sur des plates-formes de bureau (Linux, Windows et OS X) et sur des plates-formes mobiles (iOS et Android).
Selon Deploying PyQt5 application to Android via pyqtdeploy et Qt5, il est activement développé, bien qu'il soit difficile de trouver des exemples d'applications Android fonctionnelles ou un tutoriel sur la façon de compiler de manière croisée toutes les bibliothèques requises vers Android. C'est un projet intéressant à garder à l'esprit!
Jetez un œil à BeeWare . Au moment de répondre à cette question, elle en est encore à 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.
Découvrez enaml-native qui prend le concept react-native et l'applique à python.
Il permet aux utilisateurs de créer des applications avec des widgets Android natifs 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 développement intéressantes de react comme le rechargement de code et le débogage à distance.