Tecnologia / Artigos / Python no Android /
Parte 0

Cléber

![DeLorean](/files/117) 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”. * *Artigo publicado em 19/05/2018* --- 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. ## 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: wget "https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip" (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: ```bash export ANDROID_HOME=$HOME/Apps/android-sdk/new/ ``` Resumão da ópera, para você copiar e colar: ```bash cd ~/Downloads wget "https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip" mkdir -p ~/Apps/android-sdk/new cd ~/Apps/android-sdk/new && unzip sdk-tools-linux-3859397.zip echo 'export ANDROID_HOME=$HOME/Apps/android-sdk/new' ᐳᐳ ~/.bashrc export ANDROID_HOME=$HOME/Apps/android-sdk/new ``` ## 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 :) ```bash python3 setup.py android -s ``` Rodando o comando acima, acabei topando com esse erro, aqui: ``` FAILURE: Build failed with an exception.Could not find com.android.support:appcompat-v7:25.1.1. ``` Para resolver isso: ```bash ./sdkmanager ‘extras;android;m2repository’ ``` 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. ## 3.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. ```bash ./sdkmanager 'system-images;android-25;google_apis;x86_64' # Isso é BIZARRAMENTE necessário: chmod -R 777 ~/.android/avd ./avdmanager -v create avd -c 1024M -k 'system-images;android-25;google_apis;x86_64' -n avd1 -g google_apis -b x86_64 ``` 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: ```bash ./sdkmanager --update ``` E, para finalmente rodar o emulador: ```bash cd ~/Apps/android-sdk/new/tools ./emulator @avd1 ``` 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…

Curti

53 visitantes curtiram esse Item.

Anterior: Parte 1 | Próximo: Artigos / Diretrizes de Desenvolvimento