Desenvolvimento de aplicações nativas para a Plataforma Android
João Silva / M.O.S.S. / ISCTE / Lisboa 2011
1
Índice 1. Introdução 2. Plataforma Android 3. Instalação 4. Primeiro projecto 5. Interfaces gráficas 6. Correr uma aplicação 7. Debug 8. Marketing 9. Distribuição 10. Partilhar código fonte
2
1. Introdução Nos últimos anos tenho vindo a evitar a utilização da linguagem Java, procurando na maioria dos casos, arranjar uma desculpa razoavél para a substituir por outra tecnologia. O Android veio mudar esta situação!
Com seis anos dedicados a tecnologias “web”, decidi recentemente desviar um pouco a minha rota, na direção das aplicações “Mobile”. O meu objectivo é especializar-me no desenvolvimento de aplicações nativas para plataformas móveis.
Quando
olhei
pela primeira vez para o programa deste mestrado (M.O.S.S.) e
verifiquei que dele constava uma cadeira de Java pensei: “é a minha oportunidade de aprender Java e ir em frente com o Android”. Assim foi, as aulas começaram, a matéria foi aparecendo, o objectivo/projecto final foi traçado e em casa os trabalhos foram iniciados. No final, a descoberta de uma linguagem fantástica e a minha primeira aplicação em Java para Android. Nos próximos capítulos tento resumir aquilo que aprendi no decorrer deste desenvolvimento.
2. Plataforma Android Foi em 2005 que a Google se interessou por uma empresa chamada Android, Inc, uma startup Californiana que tinha como principal core o desenvolvimento de aplicações/software para dispositivos moveis. Rapidamente o interesse se materializou em aquisição. A Google pretendia desenvolver um aparelho que oferecesse serviços baseados em localização, sendo que para tal precisava de um sistema, procurando por
3
isso importar know - how e tecnologia para o mesmo. Dois anos e meio depois, a 5 de Novembro de 2007, a Google anuncia o seu novo sistema operativo para dispositivos móveis baseado em Linux. Foi também referenciado que seria Open Source. No mesmo ano e mês foi formada a Open Handset Alliance, que incluía empresas tão diversas como a Google, HTC, Motorola, Intel, Qualcomm, Sprint Nextel, T-Mobile, e NVIDIA. Era pretendido com a aliança o desenvolvimento de padrões abertos para dispositivos móveis. Em 2008 o Android passa a ser disponibilizado à comunidade como full Open Source. O primeiro dispositivo data de Setembro de 2008 e chamava-se de G1 tendo sido lançado pela T-Mobile. O Android é baseado na licença Apache, que é uma licença BSD (sem necessidade de após modificação ter de a redistribuir). Histórico de versões:
● ● ● ● ● ● ● ●
Android 1.1 (Fevereiro de 2009) - Kernel 2.6.25 Android 1.5 "Cupcake"(Maio de 2009) - Kernel 2.6.27 Android 1.6 "Donut (Setembro de 2009) - Kernel 2.6.29 Android 2.0/2.1 "Eclair" (OUT-2009) Kernel 2.6.29 Android SDK 2.0.1(Janeiro de 2010) Android 2.2 "Froyo"(20 de Maio de 2010) Kernel 2.6.32 Android 2.3
“Gingerbread” 2.6.33 ou 34
Android 3.0 (Honeycomb)
João Silva e Dinis Monteiro in “Android Vs Meego - FSOCA, M.O.S.S. 2010/11”
As aplicações para Android são escritas em Java. O código Java compilado, juntamente com todos os dados e ficheiros necessários para a aplicação são fornecidos pela ferramenta AAPT num pacote de Android, um ficheiro com a extensão APK. É este o ficheiro que será utilizado na distribuição da aplicação e finalmente na sua instalação em dispositivos de consumidor final.
Ver mais em: http://developer.android.com/guide/topics/fundamentals.htm
4
3. Instalação O JDK, o SDK do Android, o Eclipse e a configuração do plugin ADT, compõem o ambiente de desenvolvimento necessário à criação de aplicações. 1. Instalar o Java SE Development Kit (http://www.oracle.com/technetwork/java/ javase/downloads/index.html)
2. Instalar o Eclipse (http://www.eclipse.org/downloads/)
3. Instalar o Android SDK (http://developer.android.com/sdk/index.html)
4. Instalar o ADT Plugin (http://developer.android.com/sdk/eclipse-adt.htmll)
Ver mais em: http://developer.android.com/sdk/eclipse-adt.html#installing
4. Primeiro projecto Para criar a primeira aplicação para Android existe um “Projecto de teste” que pode ser iniciado da seguinte forma: Eclipse >> File > New > Project > Android > Android Test Project
5
Depois de selecionar “Android Test Project�, configurar o projecto de modo equivalente ao seguinte:
6
7
Depois de finalizar(“Finish”) a criação do projecto, ficamos com a seguinte estrutura de ficheiros:
Ao correr a aplicação teremos o seguinte resultado:
8
5. Interfaces gráficas Na plataforma Android as interfaces com o utilizador, são definidas em XML, podendo também ser criadas em “runtime” através da programação (JAVA).
Uma ferramenta importante para a criação de interfaces gráficas, é a vista em “Layout” que faz parte do plugin ADT, é a (ver capítulo 3. Instalação).
Como construir uma primeira interface?
9
1. Abrir o ficheiro “main.xml”(ponto 1) 2. Selecionar a vista de “Layout” (ponto 2) 3. Arrastando elementos de UI (ponto 3) para o “canvas” (ponto 4) 4. Definir as propriedades dos elementos no separador propriedades (ponto 5)
10
6. Correr uma aplicação Podemos correr uma aplicação de duas formas, através do Simulador ou utilizando um dispositivo real.
Para inciar a aplicação: Run > Run As > Android Application
Sempre que o simulador é iniciado, é feito um “startup” do sistema operativo(Android). Este é um processo algo lento por isso, o simulador não deverá ser encerrado, dessa forma apenas será lançada uma nova instância da aplicação por cada “Run”.
A forma mais rápida de “correr” uma aplicação é utilizando um dispositivo real, no meu
11
caso, o HTC Legend, com o Android 2.2 "Froyo".
7. Debug Um sistema de “logs” permite ao programador fazer o debug da aplicação. Na API do Android existe uma class específica para fazer “log”: Classe Log (android.util.Log).
Estão disponíveis as funções Log.v(), Log.d(), Log.i(), Log.w(), r Log.e(), que diferem no nível de “log”:
12
●
DEBUG – logs impressos pela função Log.d()
●
ERROR – logs impressos pela função Log.e()
●
INFO – logs impressos pela função Log.i()
●
VERBOSE – logs impressos pela função Log.v()
●
WARN – logs impressos pela função Log.w()
Todas as anteriores funções recebem como parâmetros duas strings:
TAG - Todas as aplicações imprimem o “log” no mesmo “stream”, definindo uma tag podemos facilmente encontrar/filtrar a informação de “log” da nossa aplicação. É uma boa prática definir a TAG como uma string constante: private static final String TAG = "MOSS";
MSG - O segundo parâmetro é a mensagem que queremos imprimir. Para imprimir um log de DEBUG basta usar a linha abaixo: Log.d(TAG, "O M.O.S.S. este aqui!");
Análize de “logs” no Logcat
Para abrir o separador do “Logcat”: Window > Show View > Others > Android -> LogCat
13
Ponto 1
Seleccionar o nível de log pretendido
Ponto 2.1
Criar Filtro por TAG ou filtragem livre (ex: MOSS)
Ponto 2.2
Criar Filtro por TAG ou filtragem livre (ex: MOSS)
Ponto 3
Listagem dos logs resultantes do filtro efectuado
Ponto 4
Filtragem livre não permanente
Atenção! A existência de um filtro que não retorna quaisquer resultados, cria a ilusão de funcionamento incorrecto do “LogCat”. A elevada utilização de logs, poderá influenciar a performance da aplicação, especialmente quando colocados dentro de ciclos.
14
8. Marketing Fortemente implementado no mercado de consumo, o “marketing”, é muitas vezes desvalorizado pela indústria do software. Até à data, o número de aplicações para disponíveis atingiu o valor de meio milhão. Obnubiladas, por esta imensidão de aplicativos, as empresas de software, principalmente as mais pequenas, sentem enorme dificuldade em concentrar atenções.
O “marketing” de produtos envolve estudo de mercado, planeamento, estratégia, posicionamento, lançamento e sustentação de um produto no mercado de consumo.
Como programador e parte interessada no estudo desta temática, acredito que se compreendidas e aprofundadas, estas premissas podem conduzir ao sucesso de uma aplicação. João Silva in “Ensaio de dissertação - M.O.S.S. MNESCA, 2010/11”
Aspectos a considerar:
1. Usabilidade 2. Interface gráfica 3. Iconografia 4. Imagem do produto 5. Campanhas de promoção
Para a minha aplicação, resolvi criar uma página de apoio que poderá ser consultada em: http://joaosantacruz.com/jz2/uk/songmemo
15
9. Distribuição Uma aplicação pode ser distribuída de várias formas, através de um “website” de apoio onde estará disponível um link para “download”, ou através de uma loja de aplicações, como por exemplo o Andoid Market. O Android Market permite ao “developer” publicar e distribuir as suas aplicações directamente para os utilizadores de “smartphones” Android de forma muito simples.
Ver mais em: http://market.android.com/publish/
16
10. Partilhar código fonte Caso a partilha do código fonte seja uma preocupação, existem diversas plataformas disponíveis com mais ou menos interesse, para o caso, escolhi o GitHub, que permite uma colaboração entre utilizadores da comunidade clara e bastante eficaz.
Ver mais em: http://github.org e http://gitref.org/remotes/
11. Referências Android SDK - Android Developers http://developer.android.com/
SongMemo’s “Website”, in www.joaosantacruz.com http://www.joaosantacruz.com/jz2/uk/songmemo
João Silva in “Ensaio de dissertação (Thesis Index) - M.O.S.S. MNESCA, 2010/11” http://joaosantacruz.com/jz2/uk/mnesca-work/
João Silva e Dinis Monteiro in “Android Vs Meego - M.O.S.S. FSOCA, 2010/11” http://www.joaosantacruz.com/jz2/uk/fsoca-work/
Android SDK - Developer console http://market.android.com/publish/
GitHub http://github.org
17
Git Reference http://gitref.org/remotes/
Futuras actualizaçþes deste documento em: http://www.joaosantacruz.com/jz2/uk/fsoca-work/
18