¿Hay alguna manera de ejecutar Python en Android?

Estamos trabajando en una versión S60 y esta plataforma tiene una API de Python agradable.

Sin embargo, Python no tiene nada de oficial en Android, pero como Jython existe, ¿hay una manera de dejar que la serpiente y el robot trabajen juntos?

Una forma es usar Kivy :

Biblioteca de código abierto de Python para el rápido desarrollo de aplicaciones que utilizan interfaces de usuario innovadoras, como las 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.

Aplicación Kivy Showcase

También está el nuevo proyecto de entorno de secuencias de comandos de Android (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 bifurcaciones pueden estar.

¡Sí! : Android Scripting Environment

Un ejemplo a través de Matt Cutts a través de SL4A – “aquí está 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) 

También hay SL4A escrito en grande por los empleados de Google.

“El Subgrupo de Pygame para Android es un puerto de un subconjunto de la funcionalidad de Pygame para la plataforma Android. El objective del proyecto es permitir la creación de juegos específicos de Android y facilitar la transferencia de juegos de plataformas similares a PC a Android. . “

Los ejemplos incluyen un juego completo empaquetado en un APK, que es bastante interesante.

He publicado instrucciones y un parche para comstackr de forma cruzada Python 2.7.2 para Android, puedes obtenerlo en mi blog aquí: http://mdqinc.com/blog/2011/09/cross-compiling-python-for-android /

EDITAR: Tengo código abierto Ignifuga , mi motor de juego 2D, está basado en Python / SDL y se comstack de forma cruzada para Android. Incluso si no lo usas para juegos, puedes obtener ideas útiles del código y la utilidad del constructor (llamada Schafer, después de Tim … sabes quién).

Scripting Layer para Android

SL4A hace lo que quieras. Puede instalarlo fácilmente directamente en su dispositivo desde su sitio y no necesita root.

Es compatible con una amplia gama de idiomas. Python es el más maduro. De forma predeterminada, utiliza 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.

API

SL4A proporciona un puerto de su biblioteca de android para cada idioma compatible. La biblioteca proporciona una interfaz para la API de Android subyacente a través de un solo objeto de Android .

 from android import Android droid = Android() droid.ttsSpeak('hello world') # example using the text to speech facade 

Cada idioma tiene prácticamente la misma API. Incluso puede utilizar la API de JavaScript dentro de las vistas web.

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

Interfaces de usuario

Para interfaces de usuario, tiene tres opciones:

  • Puede utilizar fácilmente los diálogos y menús nativos y generics a través de la API. Esto es bueno para los diálogos de confirmación y otras entradas básicas del usuario.
  • También puede abrir una vista web desde dentro de un script de Python, luego usar HTML5 para la interfaz de usuario. Cuando usas vistas web de Python, puedes pasar mensajes de ida y vuelta, entre la vista web y el proceso de Python que la generó. La interfaz de usuario no será nativa, pero sigue siendo una buena opción.
  • Existe cierta compatibilidad con las interfaces de usuario nativas de Android, pero no estoy seguro de qué tan bien funciona; Simplemente no lo he usado nunca.

Puede combinar opciones, de modo que puede tener una vista web para la interfaz principal y seguir utilizando diálogos nativos.

QPython

Hay un proyecto de terceros llamado QPython . Se basa en SL4A, y arroja algunas otras cosas útiles.

QPython le brinda una mejor interfaz de usuario 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 PIP para la administración de paquetes. También tienen un puerto de Python 3. Ambas versiones están disponibles en Play Store, de forma gratuita. QPython también agrupa bibliotecas de un grupo de Python en proyectos de Android, incluido Kivy, por lo que no es solo SL4A.

Tenga en cuenta que QPython aún desarrolla su bifurcación de SL4A (aunque, no hay mucho para ser honesto). El proyecto principal de SL4A en sí está bastante muerto.

Enlaces útiles

Como amante de Python y progtwigdor de Android, lamento decir que esta no es realmente una buena manera de hacerlo. Hay dos problemas.

Un problema es que hay mucho más que un lenguaje de progtwigción para las herramientas de desarrollo de Android. Muchos de los gráficos de Android incluyen archivos XML para configurar la pantalla, similar a HTML. Los objetos java incorporados están realmente integrados con este diseño XML, y es mucho más fácil que escribir su propio código para pasar de la lógica al bitmap.

El otro problema es que el G1 (y probablemente otros dispositivos Android para el futuro cercano) no son realmente tan rápidos. Procesadores a 200 MHz, y la memoria RAM es muy limitada. Incluso en Java, tiene que hacer una cantidad decente de reescritura para evitar más creación de 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.

Kivy


Quiero publicar esto como una extensión de lo que @JohnMudd ya ha respondido ( pero, por favor, tenga en cuenta que el inglés no es mi primer idioma )

Han pasado años desde entonces, y Kivy ha evolucionado a v1.9-dev. El mayor punto de venta de Kivy, en mi opinión, es su compatibilidad multiplataforma. Puede codificar y probar en su entorno local (Windows / * nix, etc.), también puede comstackr, depurar y empaquetar su aplicación para que se ejecute en sus dispositivos Android / iOS / Mac / Windows.

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 sus propios ui.widgets para la traducción similar), que en mi opinión es bastante fácil adoptar.

Actualmente, Buildozer y Python para Android son las herramientas más recomendadas para construir / empaquetar tus aplicaciones. Los he probado ambos y puedo decir con firmeza que hacen que la creación de aplicaciones de Android con Python sea muy fácil. Los usuarios que se sientan cómodos en su consola / terminal / símbolo del sistema no deberían tener problemas para usarlos, y sus guías también están bien documentadas.

Además, iOS es otro gran punto de venta de Kivy, siempre que pueda usar la misma base de código con pocos cambios necesarios para ejecutar la prueba en su dispositivo iOS, a través de las herramientas kivy-ios de Homebrew, aunque Xcode es necesario para la comstackción antes de ejecutarse en sus dispositivos (AFAIK el simulador de iOS en Xcode actualmente no funciona para la construcción de architecture x86). También hay algunos problemas de dependencia que se deben comstackr y manipular manualmente en Xcode para tener una comstackción exitosa, pero no sería tan difícil de resolver y la gente de Kivy Google Group también es de gran ayuda.

Con todo lo que se dice, los usuarios con buenos conocimientos de Python no deberían tener problemas para aprender lo básico en semanas (sino días) para crear algunas aplicaciones simples.

También vale la pena mencionar que puede agrupar (crear recetas) sus módulos de Python con la construcción para que los usuarios puedan hacer uso de muchas de las bibliotecas existentes que Python nos brinda, como Requests & PIL, etc., a través del soporte de extensión de Kivy .

A veces, su aplicación requiere una funcionalidad que está más allá del scope de lo que Kivy puede ofrecer. En esos casos, es necesario recurrir a bibliotecas de software externas. Dada la riqueza del ecosistema de Python, ya hay muchas bibliotecas de software que simplemente puede importar y usar de inmediato.

Lo último, pero no menos importante, si va a utilizar Kivy para proyectos más serios / comerciales, es posible que los módulos existentes no sean satisfactorios. Sin embargo, hay algunas soluciones viables, con el “trabajo en progreso” de pyjnius para Android y pyobjus . Los usuarios ahora pueden acceder a las clases de Java / Objective-C a través de esos módulos para controlar algunas de las API nativas.

Mi experiencia en Kivy es que encontrará su mejor ajuste con los progtwigdores Python experimentados y algunos progtwigdores serios que desean un desarrollo rápido o un simple mantenimiento de base de código. Funciona bien en múltiples plataformas, aunque no realmente con el sentimiento nativo .

Espero que algunos progtwigdores de la aplicación Python encuentren útil esta información y comiencen a echar un vistazo a Kivy. Solo puede mejorar (con más apoyo y conforme las bibliotecas / módulos sean portados) si hay un gran interés de la comunidad.

PD: no tengo ninguna relación con Kivy en absoluto, solo soy un progtwigdor al que realmente le gusta la idea de llevar la diversión de encoding de Python al desarrollo móvil / multiplataforma.

No en este momento y tendrías la suerte de conseguir que Jython trabaje pronto. Si está planeando comenzar su desarrollo ahora, sería mejor que se quedara con Java por ahora.

Utilizando SL4A (que ya se ha mencionado por sí mismo en otras respuestas), puede ejecutar una instancia de web2py en toda regla (es probable que otros marcos web de Python también sean candidatos). SL4A no le permite hacer componentes de la interfaz de usuario nativos (botones, barras de desplazamiento y similares), pero sí admite vistas web . Básicamente, una vista web no es más que un navegador web que apunta a una dirección fija. Creo que la aplicación nativa de Gmail utiliza una vista web en lugar de ir a la ruta normal de widgets.

Esta ruta tendría algunas características interesantes:

  • En el caso de la mayoría de los frameworks web de Python, realmente podría desarrollar y probar sin usar un dispositivo Android o un emulador de Android.
  • Cualquiera que sea el código Python que termine de escribir para el teléfono, también se puede colocar en un servidor web público con muy poca modificación (si la hubiera).
  • Podrías aprovechar todas las cosas locas de la web: consultas, HTML5, CSS3, etc.

Yo uso la aplicación QPython. Tiene un editor, una consola y puedes ejecutar tus progtwigs de Python con él. La aplicación es gratuita, y el enlace es http://qpython.com/ .

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 una apk que incluya python, libs y su aplicación.

Puede utilizar la aplicación Termux :

Tenga en cuenta que apt install python install python 3. para python 2 debe llamar a apt install python2.

Algunas demostraciones aquí: https://www.youtube.com/watch?v=fqqsl72mASE

Y también la página de github: https://github.com/termux

Otro bash más: https://code.google.com/p/android-python27/

Este integra directamente el intérprete de Python en tu aplicación apk.

Puedes ejecutar tu código Python usando sl4a . sl4a es compatible con Python, Perl , JRuby , Lua , BeanShell, JavaScript, Tcl y shell script.

Puedes aprender sl4a Ejemplos de Python .

También es posible que Python-on-a-chip esté ejecutando mosync: google group

Chaquopy

Chaquopy es un complemento para el sistema de construcción basado en Gradle de Android Studio. Se centra en la 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 idioma que sea mejor para cada componente de su aplicación.

  • Puede descargar automáticamente los paquetes PyPI y construirlos en una aplicación, incluidos los paquetes nativos seleccionados como NumPy.

  • Permite el acceso completo a todas las API de Android desde Python, incluido el kit de herramientas de interfaz de usuario nativo ( ejemplo de actividad de Python puro ).

Este es un producto comercial, pero es gratuito para el uso de código abierto y siempre seguirá siendo así.

(Soy el creador de este producto.)

Puedes usar QPython :

Tiene una consola Python, un editor, así como también instaladores / administración de paquetes.

http://qpython.com/

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

Hay una aplicación llamada QPython3 en playstore que se puede usar tanto para editar como para ejecutar el script de Python.

Enlace playstore

Otra aplicación llamada Termux en la que puedes instalar python usando el comando

 pkg install python 

Enlace de Playstore

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.

No vi esto publicado aquí, pero puedes hacerlo con Pyside y Qt ahora que Qt funciona en Android gracias a Necessitas.

Parece un buen viaje en este momento, pero podría ser una ruta viable eventualmente …

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

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 admite 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 descargues, ejecutes make y obtengas el .so o el .a

Actualmente utilizo esto para ejecutar Python en bruto en dispositivos Android. Con un par de modificaciones a los archivos de comstackción también puede hacer x86 y armeabi 64 bit

Una opción más parece ser pyqtdeploy que cita los documentos es:

una herramienta que, junto con otras herramientas provistas con Qt, permite el despliegue 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 para Android a través de pyqtdeploy y Qt5 , se desarrolla de forma activa, aunque es difícil encontrar ejemplos de aplicaciones de Android que funcionen o tutoriales sobre cómo comstackr de forma cruzada todas las bibliotecas necesarias para Android. ¡Aunque 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 objective 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 de reacción nativa y lo aplica a python.

Permite a los usuarios crear aplicaciones con widgets nativos de Android y proporciona API para usar las bibliotecas de Android y Java desde Python.

También se integra con android-studio y comparte algunas de las características de desarrollo agradables de la reacción, como la recarga de código y la depuración remota.