6. Utilizando Python no Android¶
Python no Android é diferente do Python em plataformas de desktop. Em uma plataforma desktop, o Python geralmente é instalado como um recurso do sistema que pode ser usado por qualquer usuário daquele computador. Os usuários então interagem com o Python executando um executável python e inserindo comandos em um prompt interativo ou executando um script Python.
No Android, não existe o conceito de instalação como recurso do sistema. A única unidade de distribuição de software é uma aplicação, ou “app”. Também não há console onde você possa executar um executável python ou interagir com um REPL do Python.
Como resultado, a única maneira de usar Python no Andoid é no modo incorporado – ou seja, escrevendo uma aplicação Android nativo, incorporando um interpretador Python usando libpython e invocando o código Python usando API de incorporação do Python. O interpretador Python completo, a biblioteca padrão e todo o seu código Python são então empacotados para sua aplicação para seu próprio uso privado.
A biblioteca padrão do Python tem algumas omissões e restrições notáveis no Andoid. Consulte o guia de disponibilidade de API para Android para obter detalhes.
6.1. Adicionando Python a uma aplicação Android¶
A maioria dos desenvolvedores de aplicações deve usar uma das seguintes ferramentas, o que proporcionará uma experiência muito mais fácil:
If you’re sure you want to do all of this manually, read on. You can use the testbed app as a guide; each step below contains a link to the relevant file.
Primeiro, obtenha uma construção do Python para Android:
A maneira mais fácil é baixar uma versão do Android em python.org. O diretório
prefixmencionado abaixo está no nível raiz do pacote.Or if you want to build it yourself, follow the instructions in Platforms/Android/README.md. The
prefixdirectory will be created undercross-build/HOST.
Add code to your build.gradle file to copy the following items into your project. All except your own Python code can be copied from
prefix/lib:Em suas bibliotecas JNI:
libpython*.*.solib*_python.so(bibliotecas externas, tal como OpenSSL)
Em seus ativos (assets):
python*.*(a biblioteca padrão do Python)python*.*/site-packages(seu próprio código Python)
Add code to your app to extract the assets to the filesystem.
Add code to your app to start Python in embedded mode. This will need to be C code called via JNI.
6.2. Construindo um pacote Python para Android¶
Pacotes Python podem ser criados para Android como wheels e lançados no PyPI. A ferramenta recomendada para isso é cibuildwheel, que automatiza todos os detalhes da configuração de um ambiente de compilação cruzada, da construção da wheel e dos testes em um emulador.