Estou aqui para divulgar o material da minha apresentação durante a Semana de Computação da Universidade Rural Federal de Pernambuco (UFRPE) com o mini-curso sobre Python para mobile. Quero agradecer a todo pessoal que participou deste mini-curso durante esses dois últimos dias. Foi empolgante! Acabei me empolgando também onde apresentei como desenvolver Python para os telefones Symbian com PyS60 e falei um pouco sobre o ASE (Android Scripting Enviroment) com suporte à Python.
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).
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!
Grande notícia que encontrei hoje no blog do Google Open Source: "Introducing Android Scripting Enviroment". O que seria este ambiente ? A Google lançou um ambiente de desenvolvimento que permite editar e executar scripts e seus respectivos interpretadores diretamente de um dispositivo embarcado com Android. Imagine você pode construir pequenos aplicativos em Android com uma API que suporta acesso às funcionalidades do telefone como contatos, mensagens, chamadas, sensores, text-to speech e muito mais. E o mais me chamou atenção foi ver as linguagens atualmente suportadas pelo ASE:
Python, Lua e BeanShell! Com planejamentos para novas versões com suporte à Ruby e JavaScript. Quem sabe um novo concorrente para a plataforma Python para celulares symbian ? De toda maneira já fiquei entusiasmado com a bela notícia e sem dúvidas mais uma opção para os desenvolvedores que querem começar a navegar pelo mundo dos smartphones Android!
Outra boa novidade é que você pode editar seus scripts diretamente no telefone! Muito legal, porém não é grande novidade em quesito de inovação. O PyS60 também já tem um editor mobile para scripts de python.
Se você interessou pelo projeto, que ainda não está no Android Market, você pode fazer o download do toolkit direto da página do projeto. Além de documentação e exemplos inclusos para ajudar a você se familiarizar com o ambiente.
Update: Descobri que a API de Python está disponível para Python e Lua por meio de chamadas de JSON RPC para um proxy desenvolvido para esta comunicação com Java.
Seguem alguns screenshots do ASE em execução:
Scripts podem ser editados direto no fone.
Gerenciador de scripts.
Scripts podem inicializados e executados como serviços em background.
Console Interativo.
Scripts podem usar Android UI para construção de aplicativos.
Dando continuidade à inovação contínua proposta pela Google com o desenvolvimento para Android, foi anunciado a segundarodada do Android Developer Challenge - a competição que recompensa alguns dos melhores aplicativos para a plataforma Android com altas quantias de dinheiro.
Para os interessados, a competição de fato começa em agosto, mas se você quiser já saber as regras da competição, categorias e prazos, entre neste aqui.
A Google não para, especialmente quando se trata de inovação.
Agora a idéia do Google é desenvolver um novo aplicativo para celulares Android que permitirá identificar estrelas apenas apontando a câmera do celular para o céu. Claro que há algumas restrições, é necessário que o aparelho tenha GPS, assim o software usa as informações de localização do usuário para dizer quais as estrelas que você vê no céu. E também é preciso tirar uma fotografia do céu, para que o software processe os pontos de luz e tente identificá-los com dados astronômicos.
Não há previsão de data de lançamento do aplicativo, cujo desenvolvimento foi revelado pelo jornal The Times.
Fico me perguntando, se esse aplicativo seria interessante quando o tempo está nublado ?... Pena que não há nenhum filtro de remoção "de nuvens"....
Esta é a oportunidade de você colocar em prática suas melhores idéias em desenvolvimento de software. Junte os amigos e prepare seu projeto para a Arena INFO de Software. A competição vai colocá-lo no mapa dos melhores programadores do país e a equipe campeã ainda vai ganhar uma viagem de uma semana para Nova York.
A Arena INFO de Software terá seis categorias: iPhone, Android, Game, Inteligência Artificial, Widget e Aplicativo Online. Para entrar na competição, forme um grupo com até cinco estudantes de graduação ou pós. Quanto mais original, bem elaborado e útil for seu programa, melhor. As inscrições vão de 1º de março a 20 de maio!!!
Acho que entrarei nessa!
Só queria saber se eu podia disputar em mais de uma categoria! =)
Há algumas semanas atrás, fui com o pessoal da antiga turma de faculdade que se formou comigo para um barzinho aqui em Recife, para bater papo fora, novidades e tomar uma cervejinha. Após comes e bebes, era chegada a famosa hora de pagar a conta. Após o garçom trazer aquela clássica notinha branca com a listagem de todos os itens consumidos, começamos a discutir, quem consumiu o que, o que foi consumido, aquela checagem de cervejas para ver se veio errado a conta, enfim... todo o roteiro clássico nas rodinhas de bar. Um traz a calculadora, outro divide para todo mundo, aquela confusão digna de novela. Aí fiquei pensando, e quando vi esse post sobre esse aplicativo (TippoBillloSplitamus) disponibilizado para celulares embarcados com o sistema operacional Android, me veio a idéia: "Será que existe uma maneira de poder reduzir a confusão que há na hora de dividir a conta no fim de um bar ou restaurante ?" Pensei logo no meu celular.... Se existisse uma maneira que meu celular pudesse escanear a nota ou a conta, onde os itens seriam listado na tela do aparelho e aí em vez de usar a calculadora, eu simplesmente separar quem consumiu e o que foi consumido, todas as contas e cálculos seriam gerados e eu apenas diria : Joazinho , X reais, Sirilo, Y reais, etc. Veja que redução de dor cabeça e de tempo ganharíamos, se existisse um aplicativo que automatize todo esse processo. Não sei se minha idéia é plausível, mas que evitaria a fuga dos "xexeiros" que ficam calado na hora de pagar e informar o que consumiu.
Python rodando no Android ?? Seria perfeito! Nada contra a Java, que também curto, mas seria muito bom ter essa opção de desenvolvimento (plataforma) para o Android! Logo a Google que é uma das patronas do Python. Vamos aguardar .
Se você está interessado em desenvolver aplicativos que envolvam parte de gráficos de baixo nível no Android, vale a pena dar uma olhada nessa apresentação em slides (em inglês) : ‘Filthy Rich Android Clients’. Foi elaborada por um dos desenvolvedores que trabalham na Google com o toolkit de interface gráfica do Android.
Interessante comentário do criador do Python: Python on Android? "I would like to see it, and I believe the Android team would like to see it too, but I don't know if there is enough of an incentive to actually make it happen. However since Android and Python are both open source, maybe someone else can make it happen independently. I would love to see that!" - Guido van Rossum Vamos ficar de olhos abertos! o.O
Encontrei um artigo na internet falando sobre os planos da Google com o seu novo sistema operacional: Android! Realmente o Google está encontrando problemas em lançar aparelhos com seu novo sistema e assim como operadoras e fabricantes que ainda estão testando o sistema e customizando-o de acordo com suas necessidades. O artigo é em inglês. Um comentário é que realmente a Google está trabalhando forte com as empresas parceiras e sem dúvidas a sua maior preocupação agora é a satisfação dos desenvolvedores. Afinal de contas, o trunfo do Android sem dúvidas é sua plataforma de desenvolvimento de aplicativos que virão tanto da Google como de terceiros.
Recomendo a leitura do artigo! O link do mesmo se encontra aqui.