Aprenda comigo: Python no Android — Parte 0

A prequela

Cléber Zavadniak
clebertech
4 min readMay 19, 2018

--

Boy, oh!, boy, como o mundo do Java me irrita. Não importa o que você pretenda fazer, tudo é mais complicado do que deveria. Esse é o padrão de beleza do ecossistema: se for simples e direto ao ponto, decerto os desenvolvedores torcerão seus narizes, desprezando a solução como “não enterprise o bastante”.

Desculpe pelo desabafo. Eu passei essa semana tentando compilar dois projetos distintos para Android, um deles usando ant , outro usando gradle . Calcule o quanto um linuxeiro/pytheiro fica irritado com as idiossincrasias de um ambiente tão alienígena quanto o Java/Android.

(Você pode ler este artigo lá no MyNotes.space, também:)

0- A prequela

Comecei a escrever este artigo como “parte 2”, mas fico pensando se as pessoas não acabarão seguindo passo a passo a parte 1 para somente depois descobrirem que há jeitos menos sofridos de fazer as coisas. Então resolvi torná-lo uma leitura que deve anteceder a parte 1.

Os detalhes a respeito do projeto pybee e briefcase encontram-se no “próximo” artigo (parte 1), então não entrarei em muitos detalhes neste aqui.

1- sdkmanager

Acabei descobrindo que não é necessário baixar o Android Studio inteiro. Pode-se usar apenas o “SDK Manager” na linha de comando, mesmo.

Assim:

(Tudo bem se a versão for um pouco antiga: o próprio programa consegue se atualizar.)

Conforme mencionei no artigo anterior, eu costumo jogar o conteúdo desse arquivo zip em ~/Apps/android-sdk . Mas porém entretanto todavia eu descobri, enquanto tentava compilar o “Androwish” (basicamente, Tcl/Tk para Android), que essas versões novas do SDK Manager não dão mais suporte ao ant , que era usado em alguns projetos “antigos” mas que pode ser que você, como eu, ainda queira usar. Por isso adicionei alguns detalhes nesse caminho até o SDK: joguei essa versão do SDK Manager num subdiretório chamado “new”, como em ~/Apps/android-sdk/new . Isso me permite “instalar”, “ao lado”, uma versão antiga que ainda tenha suporte decente ao ant .

Depois disso, no seu “shell rc” (no meu caso, ~/.shellrc , mas provavelmente é~/.bashrc para você), exporte a variável ANDROID_HOME:

Resumão da ópera, para você copiar e colar:

2- Compilando seu programa Python

Eis a parte curiosa: o briefcase já cuidou de instalar a SDK certa para mim, então não precisei fazer isso como um passo à parte.

(O comando que usei foi no meu projeto que faz uso do briefcase :)

Rodando o comando acima, acabei topando com esse erro, aqui:

Para resolver isso:

Ah, e veja que curioso: esses programinhas lixo não seguem convenção nenhuma: para instalar algo, só se dá o nome do que se quer instalar, conforme você pode ver no comando acima — mesmo que o binário não contenha verbo algum.

Já o download dos pacotes é feito em absoluto silêncio: eu tive que olhar meu nethogs para ver que, de fato, o comando estava baixando zilhares de dados de algum lugar. E você fica esperando um tempão sem fazer ideia do andar da carruagem. Será que dá tempo de eu pegar um café? Será que é melhor eu ir fazer outra coisa? Você nunca saberá. Talvez seja um tipo de punição. Lembra do que falei no início? Talvez o desenvolvedor responsável por esse programa achou que uma barra de progresso simples dizendo qual a porcentagem e velocidade do download acabaria tornando-o excessivamente direto-ao-ponto e simples — logo, de mau gosto, segundo as regras não-escritas do ecossistema Javeiro.

2.2- Licenças

Minha máquina não é “virgem de Android SDK”, então acabou acontecendo de eu não ser questionado sobre aceitar licenças em alguns momentos onde eu acredito que isso pudesse ter sido um problema.

Detalhes sobre licenças encontram-se na parte 1 desta série (ou seja: o próximo artigo). Link no fim deste artigo.

3- O emulador

Caso você ainda não tenha um “Android Virtual Device”, recomendo já criar um. Do contrário, todos os testes terão de ser feitos via algum celular cujo “modo desenvolvedor” esteja habilitado.

Curiosamente, não consegui rodar o emulador sem atualizar a SDK. O sinal de que isso seria necessário, dadas as mensagens de erro que li, era que o diretório ~/Apps/android-sdk/new/emulator estava vazio. Então:

E, para finalmente rodar o emulador:

Atenção: o emulador roda via qemu e pode exigir bastante da tua máquina, dependendo da configuração da mesma.

Resumo

Poderia ser melhor, mas também poderia ser pior…

Leia a parte 1, agora:

Leia.

AGORA!

(Ou não…)

--

--