¿Hay alguna manera de ejecutar Python en Android?

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

Sin embargo, no hay nada oficial sobre Python en Android, pero ya que 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 hacen uso de interfaces de usuario innovadoras, como aplicaciones multi-touch.

Kivy funciona en Linux, Windows, OS X, Android e iOS. Puede ejecutar el mismo código [python] en todas las plataformas soportadas.

Aplicación Kivy Showcase

También está el nuevo proyecto de Android Scripting Environment (ASE). Se ve impresionante, y tiene una cierta integración con los componentes nativos de Android.

¡SÍ!

Un ejemplo a través de Matt Cutts – "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) 

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

"El subconjunto de Pygame para Android es un puerto de un subconjunto de la funcionalidad de Pygame a la plataforma de Android.El objetivo del proyecto es permitir la creación de juegos específicos de Android y facilitar el portado de juegos de plataformas PC a Android . "

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

He publicado instrucciones y un parche para la compilación cruzada de Python 2.7.2 para Android, se puede obtener en mi blog aquí: http://mdqinc.com/blog/2011/09/cross-compiling-python-for-android /

EDIT: He abierto sourced Ignifuga , mi motor de juegos 2D, es Python / SDL basado y cross compila 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).

Como un amante de Python y programador de Android, estoy triste decir que esto no es realmente una buena manera de ir. Hay dos problemas.

Un problema es que hay mucho más que un lenguaje de programación para las herramientas de desarrollo de Android. Una gran parte de los gráficos de Android implican 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 mapa de bits.

El otro problema es que el G1 (y probablemente otros dispositivos Android para el futuro cercano) no son tan rápidos. Procesadores de 200 MHz, y la RAM es muy limitada. Incluso en Java usted tiene que hacer una cantidad decente de reescribir-para-evitar-más-creación de objetos si desea hacer su aplicación perfectamente suave. Python va a ser demasiado lento por un tiempo todavía en dispositivos móviles.

SL4A

Scripting Layer para Android hace lo que quieres. Puede instalarlo directamente en su dispositivo desde su sitio y no necesita root.

Soporta una variedad de idiomas; Python es el más maduro. De forma predeterminada, utiliza Python 2.6, pero hay un puerto 3.2 que puede utilizar en su lugar. He utilizado ese puerto para todo tipo de cosas en un Galaxy S2 y funcionó bien.

API

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

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

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

 var droid = new Android(); droid.ttsSpeak('hello from js'); 

Interfaces de usuario

Para las interfaces de usuario, tiene tres opciones:

  • Puede utilizar fácilmente los diálogos y menús genéricos, nativos 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 una secuencia de comandos de Python y, a continuación, utilizar HTML5 para la interfaz de usuario. Cuando se usan las vistas web de Python, se pueden pasar mensajes de ida y vuelta, entre la vista web y el proceso Python que lo generó. La interfaz de usuario no será nativa, pero sigue siendo una buena opción para tener.
  • Hay cierto apoyo para las interfaces de usuario nativas de Android, pero no estoy seguro de lo bien que funciona; No lo he usado nunca.

Puede mezclar opciones, de modo que pueda 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 lanza en algunas otras cosas útiles.

QPython te brinda una mejor interfaz de usuario para administrar tu 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 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 Android, incluyendo Kivy, por lo que no es sólo SL4A.

Tenga en cuenta que QPython todavía desarrollar su tenedor de SL4A (aunque, no mucho para ser honesto). El proyecto principal de SL4A en sí mismo está prácticamente muerto.


No por el momento y tendrás suerte de conseguir que Jython trabaje pronto. Si usted está planeando comenzar su desarrollo ahora que sería mejor con sólo se pegue a Java por ahora.

Usando SL4A (que ya ha sido mencionado por sí mismo en otras respuestas) puede ejecutar una instancia web2py completo (otros frameworks web python son candidatos probables). SL4A no le permite hacer componentes nativos de la interfaz de usuario (botones, barras de desplazamiento y similares), pero es compatible con WebViews . Un WebView no es básicamente más que un navegador web a rayas apuntando a una dirección fija. Creo que la aplicación nativa de Gmail utiliza un WebView en lugar de ir a la ruta de widget regular.

Esta ruta tendría algunas características interesantes:

  • En el caso de la mayoría de los frameworks de web python, en realidad se puede desarrollar y probar sin utilizar un dispositivo Android o un emulador de Android.
  • Cualquiera que sea el código de Python que termines escribiendo para el teléfono, también podría ser puesto en un servidor web público con muy poca (si es que hay alguna) modificación.
  • Usted podría tomar ventaja de todas las cosas web loco por ahí: consulta, HTML5, CSS3, etc

Kivy


Quiero publicar esto como una extensión de lo que @JohnMudd ya ha respondido ( pero por favor desnuda conmigo como Inglés no es mi primer idioma )

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

Con el propio lenguaje KV de Kivy , uno puede fácilmente codificar y construir la interfaz GUI fácilmente (es como Java XML, pero en lugar de TextView, etc., KV tiene su propio ui.widgets para la traducción similar), que es en mi opinión Bastante fácil de adoptar.

Actualmente Buildozer y python-for-android son las herramientas más recomendadas para construir / empaquetar sus aplicaciones. Después de haber probado los dos y puedo decir con firmeza que hacen la construcción de aplicaciones para Android con Python una brisa. Los usuarios que se sientan cómodos en su terminal de consola / terminal no deben tener problemas para usarlos y sus guías están bien documentadas.

Además, iOS es otro gran punto de venta de Kivy, siempre y cuando se pueda usar la misma base de código con pequeños cambios necesarios para probar en su dispositivo iOS , a través de las herramientas homebrew de kivy-ios , aunque Xcode es necesario para la compilación antes de ejecutarse Sus dispositivos (AFAIK iOS Simulator en Xcode actualmente no funciona para la arquitectura x86-build). También hay algunos problemas de dependencia que requieren manualmente compilado y jugueteado en Xcode para tener una construcción exitosa, pero no sería demasiado difícil de resolver y las personas en Kivy Google Group son realmente útiles también.

Con todo dicho, los usuarios con buen conocimiento de Python no tendrían ningún problema recoger los fundamentos en semanas (si no días) para construir algunas aplicaciones simples.

También vale la pena mencionar que puedes agrupar (construir recetas) tus módulos de Python con la compilación para que los usuarios puedan hacer uso de muchas bibliotecas existentes que Python nos trae, como Requests & PIL etc. a través del soporte de extensión de Kivy .

A veces su aplicación requiere funcionalidad que está más allá del alcance de lo que Kivy puede ofrecer. En esos casos es necesario recurrir a bibliotecas externas de software. Dada la riqueza del ecosistema de Python, ya hay un gran número de bibliotecas de software que puede importar y utilizar de inmediato.

El último pero no menos importante, si va a utilizar Kivy para proyectos más graves / comerciales, puede encontrar módulos existentes no satisfactorios a lo que se espera. Hay algunas soluciones viables también, con el "trabajo en progreso" de pyjnius para Andoird, y pyobjus , los usuarios ahora pueden acceder a las clases 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 programadores estacionales de Python y algún programador serio que quiera un desarrollo rápido o un simple mantenimiento de base de código. Funciona bien en múltiples plataformas, aunque no realmente en el nivel de sensación nativa .

Espero que más programadores de Python / app encuentren mi pequeña información útil y comiencen a echar un vistazo de Kivy, solo puede mejorar (con más soportes y bibliotecas / módulos obtenidos) si hay grandes intereses de la comunidad.

PSI no tienen ninguna relación con Kivy en absoluto, soy simplemente un programador que realmente le gusta la idea de llevar la codificación de Python divertido para el desarrollo móvil / multiplataforma.

Utilizo la aplicación QPython. Tiene un editor, una consola, y puede ejecutar sus programas 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 tu propia distribución de Python, incluyendo los módulos que deseas, y crear un apk incluyendo python, libs y tu aplicación.

Otro intento: https://code.google.com/p/android-python27/

Éste incrusta directamente el intérprete de Python en tu apk de la aplicación.

Puedes ejecutar tu código de Python usando sl4a . Sl4a soporta Python, Perl , JRuby , Lua , BeanShell, JavaScript, Tcl y shell script.

Puede aprender sl4a Ejemplos de Python .

También hay python-on-a-chip posiblemente ejecutando mosync: google group

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

Parece como un kludge en el momento pero podría ser una ruta viable eventualmente …

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

Otra opción si estás 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 soporta 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, ejecuta make y obtienes el .so o el .a

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

Puede utilizar la aplicación de Termux :

Ten en cuenta que apt install python instala python 3. para python 2 deberías llamar a apt install python2.

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

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

Puede utilizar QPython :

Tiene una consola de Python, Editor, así como Gestión de Paquetes / Instaladores

http://qpython.com/

Es un proyecto de código abierto con implementaciones 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

Existe una aplicación llamada QPython3 en playstore que puede usarse tanto para editar como para ejecutar scripts python.

Enlace de Playstore

Otra aplicación llamada Termux en la que se puede instalar python utilizando comando

 packages install python 

Enlace de Playstore

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

Una herramienta que, junto con otras herramientas proporcionadas con Qt, permite el despliegue de PyQt4 y PyQt5 aplicaciones escritas con Python v2.7 o Python v3.3 o posterior. Soporta la implementación en plataformas de escritorio (Linux, Windows y OS X) y plataformas móviles (iOS y Android).

De acuerdo con la implementación de PyQt5 aplicación a Android a través de pyqtdeploy y Qt5 se desarrolla activamente, aunque es difícil encontrar ejemplos de trabajo de aplicaciones de Android o tutorial sobre cómo cruzar todas las bibliotecas necesarias para Android. Es un proyecto interesante para tener en cuenta aunque!

  • Enviar bytes de Raspberry Pi (usando python) a una aplicación java android sobre bluetooth
  • Comunicación de socket con Python en Android
  • Acción de zoom en android utilizando appium-python-client
  • ¿Cómo puedo usar Python para ejecutar comandos adb?
  • Verificación de la firma RSA de Google Licensing con PyCrypto
  • Python para IOS o Android
  • Error de comando: tar xzf android-sdk_r20-linux.tgz
  • AttributeError: el objeto 'module' no tiene ningún atributo 'SignedJwtAssertionCredentials'
  • Sl4a python notificar pregunta
  • Python + Django en Android
  • ¿Cómo autenticar la solicitud de POST de usuario de Android con Django REST API?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.