Respuestas:
Una forma es usar Kivy :
Biblioteca Python de código abierto para el desarrollo rápido de aplicaciones que utilizan interfaces de usuario innovadoras, como aplicaciones multitáctiles.
Kivy se ejecuta en Linux, Windows, OS X, Android e iOS. Puede ejecutar el mismo código [python] en todas las plataformas compatibles.
También está el nuevo proyecto Android Scripting Environment (ASE / SL4A). Se ve increíble y tiene cierta integración con componentes nativos de Android.
Nota: ya no está en "desarrollo activo", pero algunos tenedores pueden estarlo.
¡Si! : Entorno de secuencias de comandos de Android
Un ejemplo a través de Matt Cutts a través de SL4A: "aquí hay un escáner de código de barras escrito en seis líneas de código 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 es un motor de juego en 2D para Python (en escritorio) que es popular entre los nuevos programadores. El subconjunto Pygame para Android se describe a sí mismo como ...
... un puerto de un subconjunto de la funcionalidad Pygame para la plataforma Android. El objetivo del proyecto es permitir la creación de juegos específicos de Android y facilitar la transferencia de juegos desde plataformas similares a PC a Android.
Los ejemplos incluyen un juego completo empaquetado como APK, que es bastante interesante.
Mi blog tiene instrucciones y un parche para la compilación cruzada de Python 2.7.2 para Android.
También he abierto Ignifuga , mi motor de juegos 2D. Está basado en Python / SDL, y compila de forma cruzada para Android. Incluso si no lo usa para juegos, puede obtener ideas útiles del código o la utilidad del generador (llamado Schafer , en honor a Tim ... ya sabe quién).
SL4A hace lo que quieres. Puede instalarlo fácilmente directamente en su dispositivo desde su sitio, y no necesita root.
Es compatible con una variedad de idiomas. Python es el más maduro. Por defecto, usa Python 2.6, pero hay un puerto 3.2 que puede usar en su lugar. He usado ese puerto para todo tipo de cosas en un Galaxy S2 y funcionó bien.
SL4A proporciona un puerto de su android
biblioteca para cada idioma compatible. La biblioteca proporciona una interfaz para la API de Android subyacente a través de un solo Android
objeto.
from android import Android
droid = Android()
droid.ttsSpeak('hello world') # example using the text to speech facade
Cada idioma tiene más o menos la misma API. Incluso puede usar la API de JavaScript dentro de las vistas web.
let droid = new Android();
droid.ttsSpeak("hello from js");
Para las interfaces de usuario, tiene tres opciones:
Puede mezclar opciones, para que pueda tener una vista web de la interfaz principal, y aún así usar diálogos nativos.
Hay un proyecto de un tercero llamado QPython . Se basa en SL4A y agrega algunas otras cosas útiles.
QPython le brinda una interfaz de usuario más agradable para administrar su instalación e incluye un pequeño editor de código de pantalla táctil, un shell de Python y un shell de PIP para la administración de paquetes. También tienen un puerto Python 3. Ambas versiones están disponibles en Play Store, de forma gratuita. QPython también agrupa bibliotecas de un montón de Python en proyectos de Android, incluido Kivy, por lo que no es solo SL4A.
Tenga en cuenta que QPython aún desarrolla su fork de SL4A (aunque, para ser sincero, no hay mucho). El principal proyecto SL4A en sí está prácticamente muerto.
Como amante de Python y programador de Android, me entristece decir que este no es un buen camino a seguir. Hay dos problemas:
Un problema es que hay mucho más que un lenguaje de programación para las herramientas de desarrollo de Android. Muchos de los gráficos de Android incluyen archivos XML para configurar la pantalla, de forma similar al HTML. Los objetos Java integrados están integrados con este diseño XML, y es mucho más fácil que escribir su código para pasar de la lógica al mapa de bits.
El otro problema es que el G1 (y probablemente otros dispositivos Android para el futuro cercano) no son tan rápidos. Los procesadores de 200 MHz y la RAM son muy limitados. Incluso en Java, debe hacer una buena cantidad de reescritura para evitar la creación de más objetos si desea que su aplicación sea perfectamente fluida. Python va a ser demasiado lento por un tiempo aún en dispositivos móviles.
Quería agregar a lo que @JohnMudd ha escrito sobre Kivy. Han pasado años desde la situación que describió, y Kivy ha evolucionado sustancialmente.
El mayor punto de venta de Kivy, en mi opinión, es su compatibilidad multiplataforma. Puede codificar y probar todo utilizando cualquier entorno de escritorio (Windows / * nix, etc.), luego empaquetar su aplicación para una variedad de plataformas diferentes, incluidas Android, iOS, MacOS y Windows (aunque las aplicaciones a menudo carecen de la apariencia nativa).
Con el propio lenguaje KV de Kivy , puede codificar y construir la interfaz GUI fácilmente (es como Java XML, pero en lugar de TextView, etc., KV tiene el suyo ui.widgets
para una traducción similar), que en mi opinión es bastante fácil de adoptar.
Actualmente, Buildozer y python-for-android son las herramientas más recomendadas para compilar y empaquetar sus aplicaciones. Los probé a ambos y puedo decir con firmeza que facilitan la creación de aplicaciones de Android con Python. Sus guías también están bien documentadas.
iOS es otro gran punto de venta de Kivy. Puede usar la misma base de código con algunos cambios necesarios a través de las herramientas Homebrew de kivy-ios , aunque se requiere Xcode para la compilación, antes de ejecutarse en sus dispositivos (AFAIK, el Simulador de iOS en Xcode actualmente no funciona para la compilación de arquitectura x86) . También hay algunos problemas de dependencia que se deben compilar y manipular manualmente en Xcode para tener una compilación exitosa, pero no serían demasiado difíciles de resolver y las personas en Kivy Google Group también son realmente útiles.
Habiendo dicho todo esto, los usuarios con buenos conocimientos de Python no deberían tener problemas para aprender lo básico rápidamente.
Si está utilizando Kivy para proyectos más serios, puede encontrar que los módulos existentes no son satisfactorios. Sin embargo, hay algunas soluciones viables. Con el (trabajo en progreso) pyjnius para Android y pyobjus , los usuarios ahora pueden acceder a las clases Java / Objective-C para controlar algunas de las API nativas.
ScreenManager
ya que esto le ahorrará toneladas de tiempo. También un consejo es leer su lista de correo, un grupo de personas con conocimientos allí dispuestos a ayudarlo.
Puede usar la aplicación Termux , que proporciona un entorno POSIX para Android, para instalar Python.
Tenga en cuenta que apt install python
instalará Python3 en Termux. Para Python2, necesitas usar apt install python2
.
No en este momento y sería afortunado de hacer que Jython trabaje pronto. Si está planeando comenzar su desarrollo ahora, sería mejor quedarse con Java por ahora.
Usando SL4A (que ya ha sido mencionado por sí mismo en otras respuestas) puede ejecutar una instancia web2py completa (otros marcos web de Python también son candidatos posibles). SL4A no le permite hacer componentes nativos de la interfaz de usuario (botones, barras de desplazamiento y similares), pero admite WebViews . Básicamente, un WebView no es más que un navegador web reducido a una dirección fija. Creo que la aplicación nativa de Gmail usa un WebView en lugar de seguir la ruta de widgets normal.
Esta ruta tendría algunas características interesantes:
Yo uso la aplicación QPython . Es gratis e incluye un editor de código, un intérprete interactivo y un administrador de paquetes, lo que le permite crear y ejecutar programas Python directamente en su dispositivo.
Desde el sitio de Python para Android :
Python para Android es un proyecto para crear su propia distribución de Python, incluidos los módulos que desea, y crear un apk que incluya python, libs y su aplicación.
Chaquopy es un complemento para el sistema de compilación basado en Gradle de Android Studio. Se centra en una estrecha integración con las herramientas de desarrollo estándar de Android.
Proporciona API completas para llamar a Java desde Python o Python desde Java , lo que permite al desarrollador usar el lenguaje que sea mejor para cada componente de su aplicación.
Puede descargar automáticamente paquetes PyPI y compilarlos en una aplicación, incluidos paquetes nativos seleccionados como NumPy.
Permite el acceso completo a todas las API de Android desde Python, incluido el kit de herramientas de la interfaz de usuario nativa (por ejemplo, actividad de Python puro ).
Este es un producto comercial, pero es gratuito para uso de código abierto y siempre seguirá siendo así.
(Soy el creador de este producto).
Otro intento más: https://code.google.com/p/android-python27/
Este incrusta directamente el intérprete de Python en tu aplicación apk.
Aquí hay algunas herramientas enumeradas en el sitio web oficial de Python
Hay una aplicación llamada QPython3 en la tienda de juegos que se puede usar tanto para editar como para ejecutar script de Python.
Otra aplicación llamada Termux en la que puedes instalar Python usando el comando
pkg install python
Si desea desarrollar aplicaciones, hay 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.
También puede consultar PySide para Android , que en realidad es enlaces de Python para Qt 4.
Hay una plataforma llamada PyMob donde las aplicaciones se pueden escribir puramente en Python y el flujo de herramientas del compilador (PyMob) las convierte en códigos fuente nativos para varias plataformas.
Compruebe también 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.
Prueba Chaquopy A Python SDK para 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.
Puedes usar QPython :
Cuenta con una consola Python, editor, así como paquetes de gestión / instaladores
Es un proyecto de código abierto con implementaciones de Python 2 y Python 3. Puede descargar la fuente y los archivos .apk de Android directamente desde github.
QPython 2: https://github.com/qpython-android/qpython/releases
QPython 3: https://github.com/qpython-android/qpython3/releases
Otra opción si está buscando 3.4.2 o 3.5.1 es este archivo en GitHub.
Python3-Android 3.4.2 o Python3-Android 3.5.1
Actualmente es compatible con Python 3.4.2 o 3.5.1 y la versión 10d del NDK. También puede soportar 3.3 y 9c, 11c y 12
Es bueno que simplemente lo descargue, ejecute make y obtenga el .so o el .a
Actualmente lo uso para ejecutar Python sin procesar en dispositivos Android. Con un par de modificaciones en los archivos de compilación, también puede hacer x86 y armeabi de 64 bits
No vi esto publicado aquí, pero puedes hacerlo con Pyside y Qt ahora que Qt funciona en Android gracias a Necessitas.
Parece un gran desafío en este momento, pero podría ser una ruta viable eventualmente ...
Una opción más parece ser pyqtdeploy, que cita los documentos es:
Una herramienta que, junto con otras herramientas proporcionadas con Qt, permite la implementación de aplicaciones PyQt4 y PyQt5 escritas con Python v2.7 o Python v3.3 o posterior. Admite la implementación en plataformas de escritorio (Linux, Windows y OS X) y en plataformas móviles (iOS y Android).
De acuerdo con la aplicación Deploying PyQt5 en Android a través de pyqtdeploy y Qt5 , se desarrolla activamente, aunque es difícil encontrar ejemplos de aplicaciones de Android que funcionen o tutoriales sobre cómo compilar todas las bibliotecas necesarias para Android. ¡Sin embargo, es un proyecto interesante a tener en cuenta!
Echa un vistazo a BeeWare . En el momento de responder a esta pregunta todavía está en desarrollo temprano. Su objetivo es poder crear aplicaciones nativas con Python para todos los sistemas operativos compatibles, incluido Android.
Echa un vistazo a enaml-native que toma el concepto react-native y lo aplica a python.
Permite a los usuarios crear aplicaciones con widgets nativos de Android y proporciona API para usar bibliotecas de Android y Java desde Python.
También se integra con android-studio y comparte algunas de las agradables funciones de desarrollo de react como la recarga de código y la depuración remota.