Python es un lenguaje de programación muy popular debido a ciertas características deseables que tiene, como legibilidad, facilidad de aprendizaje, flexibilidad, etc.
Por lo tanto, se ha adoptado ampliamente en varios campos o aspectos de la programación informática, como secuencias de comandos, desarrollo web, seguridad cibernética y aprendizaje automático.
Python tiene muchas bibliotecas y marcos que lo adaptan al uso en estos diferentes campos, por ejemplo, Django y Flask son marcos de Python utilizados en el desarrollo web; Pandas, Numpy, Scikit-learn, PyTorch, etc., se utilizan en el aprendizaje automático, mientras que las bibliotecas de Python como Scapy, Beautiful Soup y Cryptography se utilizan en la ciberseguridad.
Un campo de la programación en el que Python no se usa mucho es el desarrollo móvil.
Esto se puede atribuir al hecho de que Python tiene una ejecución relativamente lenta (por lo tanto, las aplicaciones de Python pueden tener problemas en dispositivos móviles con especificaciones bajas) y también al hecho de que Python, al ser un lenguaje interpretado de alto nivel, está lejos y puede no funcionan bien con el lenguaje nativo de los sistemas operativos móviles (es decir, Java para Android y Objective-c/Swift para iOS), que generalmente son lenguajes compilados de nivel medio.
Sin embargo, esta deficiencia de Python en el desarrollo móvil es un problema para muchos programadores, ya que Python es básicamente el primer lenguaje más popular para los principiantes en programación, y es posible que deseen profundizar en el desarrollo móvil, que se ha vuelto muy rentable debido a los miles de millones de dispositivos móviles. dispositivos que se utilizan en todo el mundo.
Además, los profesionales en Python que ya están usando el lenguaje para el desarrollo web, la inteligencia artificial o la seguridad cibernética también pueden querer convertir su software en aplicaciones móviles por una razón u otra.
Sin duda, fue un problema al que me enfrenté después de aprender Python y decidir crear aplicaciones móviles para hacer llegar algunos de los scripts que había escrito a los usuarios que pudieran encontrarlos útiles.
Sin embargo, aunque no es popular usar Python para el desarrollo móvil, no es imposible. De hecho, existen un par de marcos y bibliotecas para el desarrollo móvil con Python, y algunos tienen una comunidad bastante importante.
Algunos de ellos son Python para Android, Pymob, PyQT (pyqtdeploy), Kivy, RenPi y Beeware.
Algunos de estos marcos también heredan la sintaxis amigable de Python para el desarrollo de UI (por ejemplo, el lenguaje de diseño Kivy). Esto convierte a Python en un lenguaje de desarrollo de aplicaciones móviles muy útil cuando se usa para aplicaciones pequeñas o creación rápida de prototipos.
Sin embargo, surgen muchos problemas al intentar compilar o empaquetar una aplicación de Python terminada para dispositivos móviles. Al menos, esta fue mi experiencia con Kivy, y mi investigación mostró que era un problema común.
Una de las razones de este problema es probablemente la frecuencia con la que las bibliotecas móviles livianas de Python no aprovechan los sofisticados recursos de depuración de Android Studio en la medida en que lo hacen los marcos populares como Flutter y React Native.
Este artículo explora más a fondo el desarrollo móvil con Python en relación con este problema de empaquetado y las mejores prácticas para superarlo.
Kivy: este es en realidad un marco Python multiplataforma que permite a los usuarios crear aplicaciones para Windows, Mac, Linux, Android e iOS. Kivy utiliza un lenguaje de diseño limpio para desarrollar una interfaz de usuario similar en todas las plataformas. Utiliza Python puro para la programación de aplicaciones y los paquetes (por ejemplo, buildozer se utiliza para implementar el código en plataformas específicas).
Pyqtdeploy: proporciona un conjunto de herramientas para empaquetar aplicaciones o bibliotecas PyQt CLI y GUI en dispositivos móviles y de escritorio. Los proyectos empaquetados con esta herramienta pueden comercializarse gracias a su licencia gratuita.
Beeware: este es un conjunto de herramientas para crear aplicaciones de Python, incluido Toga, un kit de herramientas para la interfaz de usuario multiplataforma, Batavia, un controlador de Javascript, y Briefcase para empaquetar aplicaciones para dispositivos móviles y de escritorio. Las aplicaciones de Beeware tienen una apariencia y un funcionamiento específicos de la plataforma.
Si bien el proceso de desarrollo suele ser fluido y sencillo, empaquetar una aplicación de Python para cualquier plataforma suele ser problemático. Además del móvil, también experimenté este problema al intentar empaquetar un archivo exe de Python usando Pyinstaller.
El problema se agrava aún más cuando se utilizan bibliotecas de Python de terceros en la aplicación.
Según mi experiencia, esta tormenta de errores al empaquetar la aplicación se reduce a dos razones principales:
Las bibliotecas de desarrollo móvil de Python tienen poco o ningún soporte para el desarrollo de aplicaciones en tiempo real con emuladores de Android o dispositivos Android.
Los desarrolladores móviles que usan Flutter o reaccionan nativo apreciarán lo útil que es usar un dispositivo virtual o físico mientras construyen su aplicación. Esto ayuda a descubrir todo tipo de errores de sintaxis, tiempo de ejecución y compatibilidad de forma temprana para solucionarlos rápidamente.
Sin embargo, con las bibliotecas de Python, los desarrolladores generalmente tienen que crear la aplicación en su dispositivo de escritorio antes de empaquetar la versión APK para el dispositivo móvil.
Esto puede generar muchos problemas de compatibilidad cuando las herramientas de Android o iOS comienzan a interactuar con el código de la aplicación.
Por lo tanto, el problema es que una aplicación que se creó para un entorno de escritorio se empaqueta para dispositivos móviles.
Esto puede parecer bastante obvio, pero los desarrolladores deben tenerlo en cuenta al empaquetar una aplicación móvil de Python porque es probable que la terminal no lo indique (como fue mi caso).
Esto puede desperdiciar un valioso tiempo de desarrollo e incluso podría frustrar al desarrollador hasta el punto de darse por vencido.
Uso de bibliotecas de terceros.
Me parece necesario señalar esto debido a mi experiencia; al intentar empaquetar un programa de Python, lo creé como un ejecutable de Windows.
Para mi sorpresa, aunque el programa funcionaba bien en la terminal de Python, recibí quejas de incompatibilidad de las bibliotecas de terceros al empaquetar la aplicación.
Esto también puede suceder al empaquetar un programa de Python como una aplicación móvil.
Espere que la terminal no señale todos los errores presentes.
Investigue la compatibilidad de las versiones de las bibliotecas utilizadas.
Cree una interfaz de usuario dinámica que pueda adaptarse a los dispositivos móviles sin causar desbordamiento.
Utilice cualquier comando de depuración adicional disponible para obtener un informe de error detallado.
Utilice aplicaciones de depuración como logcat reader para obtener informes de terminal adicionales cuando su aplicación se esté ejecutando en su dispositivo móvil.