paint-brush
Você pode construir um aplicativo móvel em Python, mas empacotá-lo corre o risco de uma tempestade de bugspor@oliveremeka
10,462 leituras
10,462 leituras

Você pode construir um aplicativo móvel em Python, mas empacotá-lo corre o risco de uma tempestade de bugs

por Oliver Ifediorah5m2023/01/13
Read on Terminal Reader

Muito longo; Para ler

Python é uma linguagem de programação muito popular devido a certos recursos desejáveis que possui; como legibilidade, facilidade de aprendizado, flexibilidade, etc. Tornou-se amplamente adotado em vários campos ou aspectos da programação de computadores, como scripts, desenvolvimento web, segurança cibernética e aprendizado de máquina. Um campo da programação em que o python não é amplamente usado é o desenvolvimento móvel. Isso pode ser atribuído ao fato de que o python é relativamente lento na execução (portanto, os aplicativos python podem ter problemas em dispositivos móveis com especificações baixas). Este artigo explora ainda mais o desenvolvimento móvel com Python em relação a esse problema de empacotamento.
featured image - Você pode construir um aplicativo móvel em Python, mas empacotá-lo corre o risco de uma tempestade de bugs
Oliver Ifediorah HackerNoon profile picture
0-item

Python é uma linguagem de programação muito popular devido a certos recursos desejáveis, como legibilidade, facilidade de aprendizado, flexibilidade, etc.


Por isso, tornou-se amplamente adotado em vários campos ou aspectos da programação de computadores, como scripts, desenvolvimento web, segurança cibernética e aprendizado de máquina.


Python tem muitas bibliotecas e estruturas que o adaptam ao uso nesses diferentes campos, por exemplo, Django e Flask são estruturas Python usadas no desenvolvimento da web; Pandas, Numpy, Scikit-learn, PyTorch, etc., são usados em aprendizado de máquina, enquanto bibliotecas Python como Scapy, Beautiful Soup e Cryptography são usadas em segurança cibernética.


Um campo da programação em que o Python não é amplamente usado é o desenvolvimento móvel.


Isso pode ser atribuído ao fato de que o Python é relativamente lento na execução (portanto, os aplicativos Python podem ter dificuldades em dispositivos móveis com especificações baixas) e também devido ao fato de que o Python, sendo uma linguagem interpretada de alto nível, está longe e pode não funcionam bem com a linguagem nativa dos sistemas operacionais móveis (ou seja, Java para Android e Objective-c/Swift para iOS), que geralmente são linguagens de nível médio compiladas.


Essa deficiência do Python no desenvolvimento móvel é, no entanto, um problema para muitos programadores, pois o Python é basicamente a primeira linguagem mais popular para iniciantes em programação, e eles podem querer mergulhar no desenvolvimento móvel, que se tornou muito lucrativo devido aos bilhões de aplicativos móveis. dispositivos usados em todo o mundo.


Além disso, profissionais em Python que já estão usando a linguagem para desenvolvimento web, inteligência artificial ou segurança cibernética também podem querer converter seu software para aplicativos móveis por um motivo ou outro.


Certamente foi um problema que enfrentei depois de aprender Python e decidir criar aplicativos móveis para obter alguns dos scripts que escrevi para usuários que podem achá-los úteis.


No entanto, embora não seja popular usar o Python para desenvolvimento móvel, não é impossível. Na verdade, existem algumas estruturas e bibliotecas para desenvolvimento móvel com Python, e algumas têm uma comunidade considerável.


Alguns deles são Python-para-Android, Pymob, PyQT(pyqtdeploy), Kivy, RenPi e Beeware.


Algumas dessas estruturas também herdam a sintaxe amigável do Python para desenvolvimento de interface do usuário (por exemplo, linguagem de design Kivy). Isso torna o Python uma linguagem de desenvolvimento de aplicativos móveis muito útil quando usado para pequenos aplicativos ou prototipagem rápida.


Muitos problemas, no entanto, surgem ao tentar compilar ou empacotar um aplicativo Python finalizado para dispositivos móveis. Pelo menos, essa foi minha experiência com Kivy, e minha pesquisa mostrou que era um problema comum.


Um motivo para esse problema é provavelmente a frequência com que as bibliotecas móveis leves do Python não aproveitam os recursos sofisticados de depuração do Android Studio na medida em que estruturas populares como Flutter e React Native o fazem.


Este artigo explora ainda mais o desenvolvimento móvel com Python em relação a esse problema de empacotamento e as melhores práticas para superá-los.

Algumas estruturas populares de desenvolvimento móvel em Python

  1. Kivy: Na verdade, é uma estrutura Python de plataforma cruzada que permite aos usuários criar aplicativos para Windows, Mac, Linux, Android e iOS. Kivy usa uma linguagem de design limpa para desenvolver interface do usuário que é semelhante em todas as plataformas. Ele usa Python puro para a programação de aplicativos e pacotes (por exemplo, o buildozer é usado na implantação do código em plataformas específicas).


  2. Pyqtdeploy: fornece um conjunto de ferramentas para empacotar aplicativos ou bibliotecas CLI e GUI do PyQt para desktop e dispositivos móveis. Os projetos empacotados com esta ferramenta podem ser comercializados devido à sua licença gratuita.


  3. Beeware: Este é um conjunto de ferramentas para criar aplicativos Python, incluindo Toga - um kit de ferramentas para interface do usuário multiplataforma, Batavia - um manipulador de Javascript e Briefcase para empacotar aplicativos para dispositivos móveis e desktop. Os aplicativos Beeware têm aparência e comportamento específicos da plataforma.

O problema da embalagem

Embora o processo de desenvolvimento geralmente seja tranquilo e direto, o empacotamento de um aplicativo Python para qualquer plataforma costuma ser problemático. Além do celular, também tive esse problema ao tentar empacotar um arquivo Python exe usando o Pyinstaller.


O problema é ainda mais exacerbado quando bibliotecas python de terceiros são usadas no aplicativo.


Pela minha experiência, essa tempestade de bugs ao empacotar o aplicativo se resume a dois motivos principais:


  1. As bibliotecas de desenvolvimento móvel Python têm pouco ou nenhum suporte para desenvolvimento de aplicativos em tempo real com emuladores Android ou dispositivos Android.


    Os desenvolvedores móveis que usam o Flutter ou o react nativo apreciarão como é útil usar um dispositivo virtual ou físico ao criar seu aplicativo. Isso ajuda a descobrir todos os tipos de erros de sintaxe, tempo de execução e compatibilidade com antecedência para correção rápida.


    Com as bibliotecas python, no entanto, os desenvolvedores geralmente precisam criar o aplicativo em seu dispositivo de desktop antes de empacotar a versão do APK para o dispositivo móvel.


    Isso pode resultar em muitos problemas de compatibilidade quando as ferramentas do Android ou iOS começam a interagir com o código do aplicativo.


    Portanto, o problema é que um aplicativo desenvolvido para um ambiente de desktop está sendo empacotado para dispositivos móveis.


    Isso pode parecer bastante óbvio, mas os desenvolvedores devem ter isso em mente ao empacotar um aplicativo móvel Python, porque o terminal provavelmente não o indica (como foi o meu caso).


    Isso pode desperdiçar um tempo precioso de desenvolvimento e até frustrar o desenvolvedor a ponto de desistir.


  2. Uso de bibliotecas de terceiros.


    Acho isso necessário apontar devido à minha experiência; ao tentar empacotar um programa Python, criei-o como um executável do Windows.


    Para minha surpresa, enquanto o programa estava funcionando bem no terminal Python, recebi reclamações de incompatibilidade de bibliotecas de terceiros ao empacotar o aplicativo.


    Isso também pode acontecer ao empacotar um programa python como um aplicativo móvel.

Melhores práticas para superar essa tempestade de bugs no empacotamento do APK do Python

  1. Espere que o terminal não indique todos os erros presentes.


  2. Pesquise a compatibilidade das versões das bibliotecas utilizadas.


  3. Crie uma interface do usuário dinâmica que possa se adaptar a dispositivos móveis sem causar estouro.


  4. Use qualquer comando de depuração extra disponível para obter um relatório de erro detalhado.


  5. Use aplicativos de depuração como o leitor logcat para obter relatórios de terminal adicionais quando seu aplicativo estiver sendo executado em seu dispositivo móvel.