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 prefix mencionado 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 prefix directory will be created under cross-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*.*.so

      • lib*_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.