¿Cómo hacer que la aplicación de Android esté completamente en Python? [cerrado]

104

Me gustaría desarrollar una aplicación de Android (bastante simple) para distribuirla a través de Play Store. Me gustaría hacerlo completamente en Python. Sin embargo, la investigación en línea no me ha esclarecido del todo: la mayoría de los comentarios están desactualizados (> 1 año y creo que podría haber una mejor integración de Python desde entonces) o hablan de ejecutar Python en Android (por ejemplo, aquí ).

Por lo tanto, busco información sobre las preguntas:

  • ¿Es factible desarrollar una aplicación completamente en Python y cuáles son las herramientas para hacerlo? (¿Es recomendable, por ejemplo, Kivy?)
  • Si es así, ¿cuáles son los mejores entornos de software para implementar esto? (Intenté sin éxito usar Android Studio, pero no pude encontrar una manera de ejecutar el código Python allí).

Soy bastante nuevo en el desarrollo de aplicaciones y agradecería mucho cualquier pista de hacer esto en Python en lugar de en Jave, etc., que aún no sé.

Muchas gracias por su ayuda de antemano.

Ivo
fuente
en el pasado, usé kivy y su programa Buildozer. tienen documentación aquí kivy.org/docs/guide/packaging-android.html
es
De forma nativa, debe usar Java o Kotlin, sin embargo, como otros han señalado, hay "constructores de aplicaciones" o marcos de trabajo de terceros que puede usar con Python como PyMob o Kivy.
Dominik Schmidt
6
Creé un juego para Android que está completamente desarrollado en Python usando Kivy. Se llama CoinTex y está disponible aquí en Google Play: play.google.com/store/apps/details?id=coin.tex.cointexreactfast . El código fuente del juego está disponible aquí en GitHub: github.com/ahmedfgad/CoinTex . También escribí un libro que se publicará este año para crear aplicaciones de Android usando Python. Se titula "Creación de aplicaciones de Android en Python usando Kivy con Android Studio: con Pyjnius, Plyer y Buildozer Ahmed Fawzy Gad" disponible aquí en Amazon: amazon.com/dp/1484250303 .
Ahmed Gad
1
No puedo publicar una respuesta, pero aquí parece haber una solución : se demostrarán diferentes tecnologías, incluidas las GUI QML basadas en PySide que utilizan el puerto Necessitas Qt y el enfoque basado en Py4A / SL4A, que se puede combinar con WebKit y re -utilizar marcos web de Python.
Basj

Respuestas:

111

Para responder a tu primera pregunta: sí, es factible desarrollar una aplicación de Android en python puro , para lograrlo te sugiero que uses BeeWare , que es solo un conjunto de herramientas de python , que funcionan muy bien juntas y te permiten desarrollar aplicaciones nativas de la plataforma en python.

Mira este video del creador de BeeWare que explica y demuestra perfectamente su aplicación.

Cómo funciona

El lenguaje de implementación preferido de Android es Java, por lo que si desea escribir una aplicación de Android en Python, debe tener una forma de ejecutar su código Python en una máquina virtual Java. Esto es lo que hace VOC . VOC es un transpilador: toma el código fuente de Python, lo compila en CPython Bytecode y luego transpila ese bytecode en bytecode compatible con Java. El resultado final es que los archivos de código fuente de Python se compilan directamente en un archivo .class de Java, que se puede empaquetar en una aplicación de Android.

VOC también le permite acceder a objetos Java nativos como si fueran objetos Python, implementar interfaces Java con clases Python y subclases de clases Java con clases Python. Con esto, puede escribir una aplicación de Android directamente contra las API nativas de Android.

Una vez que haya escrito su aplicación nativa de Android, puede usar Briefcase para empaquetar su código Python como una aplicación de Android.

Briefcase es una herramienta para convertir un proyecto de Python en una aplicación nativa independiente. Puede empaquetar proyectos para:

  • Mac
  • Ventanas
  • Linux
  • iPhone / iPad
  • Androide
  • Apple TV
  • tvOS.

Puede verificar esta aplicación nativa de Android Tic Tac Toe escrita en Python, usando la suite BeeWare. en GitHub

Además de las herramientas BeeWare, necesitará tener un JDK y un SDK de Android instalados para probar la ejecución de su aplicación.

y para responder a su segunda pregunta: un buen entorno puede ser cualquier cosa con la que se sienta cómodo, ya sea un editor de texto y una línea de comando, o un IDE, si está buscando un buen IDE de Python, le sugiero que pruebe Pycharm , tiene una edición comunitaria que es gratuita y tiene un entorno similar al de Android Studio, debido a que fueron realizadas por la misma empresa.

Espero que esto haya sido de ayuda

shittu maroof
fuente
1
¿Soy solo yo, o se ha abandonado VOC?
Financia la demanda de Monica el
2
este es un callejón sin salida (la última vez que lo revisé: diciembre de 2018). Uno o más componentes de esta solución demasiado compleja ya no funciona o no puede mantenerse actualizado.
Berry Tsakala
2
Solo una actualización de esto para 2019, pero Kotlin es ahora el idioma preferido para el desarrollo de Android.
DaveTheMinion
3
@Basj Me gustaría decir que Beeware definitivamente estará disponible por un tiempo, porque con solo echar un vistazo a su cuenta de GitHub, encontrará que se está desarrollando activamente, y si se dirige al canal de Gitter, puede siempre llegan a todo el equipo, especialmente al Dr. Russell (freakyboy) el creador, y la comunidad es bastante amigable, y también hubo un tweet muy reciente (26 de septiembre de 2019) desde su cuenta oficial anunciando que recibieron una beca de educación de Python base de software. Creo que valdría la pena su tiempo, especialmente si le gusta Python como lenguaje
maroof shittu
1
BeeWare no parece ser compatible con Android (Java) en esta etapa en ningún caso.
Mark Anderson
15

Puede probar BeeWare , como se describe en su sitio web:

Escriba sus aplicaciones en Python y publíquelas en iOS, Android, Windows, MacOS, Linux, Web y tvOS utilizando interfaces de usuario nativas y enriquecidas. Una base de código. Varias aplicaciones.

Te da la posibilidad de que quieras escribir aplicaciones de Android en Python, y además tiene la ventaja de que no necesitarás aprender otro marco en el futuro si también quieres hacer algo en una de las otras plataformas enumeradas.

Aquí está el tutorial para aplicaciones de Android .

Emmagordon
fuente
4
¿Creó una aplicación usted mismo con BeeWare?
Berry Tsakala
11

Hay dos competidores principales para las aplicaciones de Python en Android

Chaquopy

https://chaquo.com/chaquopy/

Esto se integra con el sistema de compilación de Android, proporciona una API de Python para todas las funciones de Android. Para citar el sitio "La API de Android completa y el kit de herramientas de la interfaz de usuario están directamente a su disposición".

Beeware (kit de herramientas del widget Toga)

https://pybee.org/

Esto proporciona un transpilador de múltiples objetivos, es compatible con muchos objetivos como Android e iOS. Utiliza un kit de herramientas de widget genérico (toga) que se asigna a las llamadas de la interfaz del host.

¿Cúal?

Ambos son proyectos activos y sus cuentas de github muestran una buena cantidad de actividad reciente.

Beeware Toga, como todas las bibliotecas de widgets, es bueno para llevar los conceptos básicos a múltiples plataformas. Si tiene diseños básicos y desea expandirse a otras plataformas, esto debería funcionar bien para usted.

Por otro lado, Chaquopy es mucho más preciso en su mapeo de la API de Python a Android. También le permite mezclar en Java, útil si desea utilizar código existente de otros recursos. Si tiene objetivos de diseño estrictos y desea principalmente apuntar a Android, este es un recurso mucho mejor.

Harvey
fuente
10

¡Android, Python!

Cuando vi estas dos palabras clave juntas en su pregunta, Kivy es la que me vino a la mente primero.

Logotipo de Kivy

Antes de llegar al desarrollo nativo de Android en Java usando Android Studio, había probado Kivy . Es simplemente asombroso. Aquí hay algunas ventajas que pude averiguar.


Fácil de usar

Con los conceptos básicos de Python, no tendrá problemas para aprenderlo.


Buena comunidad

Está bien documentado y tiene una gran comunidad activa.


Plataforma cruzada.

Puede desarrollar cosas para Android, iOS, Windows, Linux e incluso Raspberry Pi con este marco único. Fuente abierta.


Es un software gratis

Al menos algunos de sus competidores (multiplataforma) quieren que pague una tarifa si desea una licencia comercial.


Soporte de gráficos acelerados

El motor de gráficos de Kivy construido sobre OpenGL ES 2 lo hace adecuado para softwares que requieren renderizado rápido de gráficos, como juegos.



Ahora, entrando en la siguiente parte de la pregunta, no puede usar Android Studio IDE para Kivy. Aquí hay una guía detallada para configurar el entorno de desarrollo.

Bertram Gilfoyle
fuente
4
El soporte de Windows está muy por detrás de los estándares de producción (o incluso del estándar para aficionados). Además, la mitad del mundo no puede usarlo debido a la falta de soporte RTL.
Berry Tsakala
¿Por qué dejó Kivy y lo cambió a herramientas de desarrollo nativas? Sugiere que tiene algunas desventajas.
igoemon