Executando Python no Android OS da Google

Olá pessoal,

Este post é resultado de um experimento rápido que eu realizei nestas semanas sobre uma curiosidade que me alimentava há um certo tempo: " É possível desenvolver com Python na plataforma Android ?"
E a ótima notícia é que sim, é possível!  Eu estava brincando com meu N900 da Nokia que vem com o Maemo OS e este tem  suporte total ao Python nativo. Mas, é difícil no mercado brasileiro você comprar um N900, especialmente depois que a Nokia divulgou o seu preço oficial que fica acima da faixa de R$ 1000 reais.  E ultimamente tenho visto uma tendência positiva de aparelhos embarcados com a plataforma Android da Google e  suportada por fabricantes bastante populares no mercado brasileiro como a Motorola, Samsung, HTC, LG, etc. Como sou um fã da linguagem Python e pelas suas particularidades que fazem desta linguagem ser uma ferramenta para construção rápida de aplicativos, fiquei curioso para saber se o Android suportava desenvolvimento com Python.

Mas calma, nem tantas alegrias! De fato a plataforma oficial de desenvolvimento para o Android é a linguagem Java e que permite total integração com o sistema operacional e consequentemente a construção de aplicativos completos que possuam GUI e ao mesmo tempo instaláveis. Por enquanto assim como Python e outras linguagens de script é necessário que você instale um interpretador runtime para o Android e assim você poderá rodar seus scripts Python.  De acordo com alguns forums que venho acompanhado, parece que há uma movimentação no Google para tornar possível a construção de aplicativos completos com linguagens de script como Python, inclusive disponibilizando-os via a loja virtual Android Market.

Agora que sabemos que é possível desenvolver pequenos aplicativos Python no Android, vamos para a próxima etapa que é como e por onde começamos a desenvolver.  A resposta para esta pergunta está no projeto extra-oficial android-scripting (ASE).

Este projeto apresentado oficialmente em meados de 2009 agora conhecido como SL4A (Scripting Layer for Android) trouxe ao sistema Android o suporte a linguagens baseado em scripts como Python, Perl, JRuby, Lua, JavaScript, Tcl, e até o Shell. De acordo com o wiki do projeto, ele pode ser executado via terminal ou em background.

Tela de Edição do ASE

Existem 2 maneiras de instalar o interpretador e executá-lo: Por meio de um aparelho que tenha o sistema operacional Android ou pelo uso do emulador. Neste tutorial focarei na instalação no emulador, pois mesmo você não tendo um aparelho em mãos pode já começar a escrever códigos Python para executar no emulador e no futuro com seu aparelho em mãos vê-los em tempo real.  Deixo claro que nem todas funcionalidades estarão ativas por meio do emulador como conexão bluetooth, speech-to-text, câmera e outras funcionalidades avançadas. Você pode ter mais detalhes sobre o emulador no site oficial do Android.

Vamos ao passo - a - passo (neste tutorial foi usado o sistema operacional Mac OS 10.5)

1 - Instalar o Android SDK

Por meio deste post (existem diversos pela internet (Windows)) eu consegui instalar o SDK do Android (neste tutorial a última versão era a 2.2).  Com apenas o passo 2: Download the Android SDK,  já é possível ter o emulador pronto para uso.

2 - Configurar o Android Virtual Device (AVD)


O próximo passo é criar uma dispositivo virtual (AVD), com este é possível simular o dispositivo  com a versão do Android desejado. Para isso navego até a pasta onde eu extraí o android sdk:
  • /android-sdk-mac_86/tools  (meu caso no Mac)
  • C:\android-sdk-windows\tools\android.bat  (possível no Windows)
Executo o comando:

         ./android   (no Mac OS) ,  C:\android-sdk-windows\tools\android.bat (no Windows).

Crio um novo AVD, nomeado 'ASE_test', conforme a imagem abaixo:




Selecione o AVD criado e clique no botão 'Start..'


3 - Instalação do ASE (Android Scripting Enviroment)

Você pode instalar por via console, baixando os pacotes no seu browser e depois instalando mediante comandos no console (ver este link) ou você pode fazer toda a instalação dentro do próprio emulador! Muito mais fácil, pois o Google permite instalar aplicativos no seu emulador como se fosse um dispositivo real! Para facilitar esta a visualização desta etapa, preparei um vídeo passo-a-passo ilustrando a instalação completa e inclusive como editar e executar scripts python com o ASE no emulador Android (serve também no dispositivo móvel).



Running Python on Android OS Emulator from Marcel Caraciolo on Vimeo.


O que está acontecendo por baixo ? Para simplicar, o ASE provê  uma classe facade (fachada) que permite a integração via API por meio JSON RPC que funciona como um proxy. Assim funcionalidades nativas podem ser acessadas por meio desta fachada em interpretadores como Python e Lua. Claro que estas devem estar encapsuladas pelas classes AndroidFacade e AndroidProxy que de acordo com os autores do projeto são simples de extender.

4- Só programar e se divertir!

Pronto pessoal, vocês podem ter agora o Python rodando no seu emulador ou até no seu aparelho (os mesmos passos podem ser feitos em um dispositivo real). No emulador, embora limitado, já dá uma prévia do que é capaz a plataforma Android que abrange milhares aparelhos de diversas fabricantes. Vale ficar de olho nela, em especial no Brasil!  Pode tomar o lugar da Nokia na categoria Smartphones, se a Nokia não acelerar seu desenvolvimento com o MeeGo.

Há mais informações no site oficial do projeto do ASE-Android  e se quiser acompanhar a lista de dicussão do mesmo, também se encontra neste link.

Espero ter ajudado a todos a conhecerem mais uma plataforma que Python está presente: A plataforma Android da Google!

Até a próxima,

Atenciosamente,

Marcel Caraciolo

7 comentários:

Francisco Souza disse...

Bacana demais, parabéns pelo post ;)

Mas eu ainda acho que no caso do Android, vale mais a pena trabalhar com Java mesmo, se for para algo profissional =)

marcelcaraciolo disse...

Concordo Francisco, ainda não é profissional trabalhar com python em cima do Android, mas vejo um futuro positivo se a Google manter este porting de linguagens para o desenvolvimento na plataforma.
Valeu!

Arilson Mendes disse...

Post muito interessante e esclarecedor, parabens!

marcelcaraciolo disse...

Obrigado Arilson pelo post!

Anônimo disse...

Valeu cara! Bom post..

Afonso Jr. disse...

Pow tenho problemas com palavras acentuas no python/android...
Sabe como me ajudar??

Unknown disse...

Afonso, usa este cabeçalho nos teus códigos:
# -*- coding: utf8 -*-

top