Escolar Documentos
Profissional Documentos
Cultura Documentos
Novatec
Authorized Portuguese translation of the English edition of Programing Android, First Edition ISBN 9781449389697
2011 Zigurd MedniekesLaird Dornin, Blake Meike and Masumi Nakamura. This translation is published and
sold by permission of O'Reilly Media, Inc., the owner of all rights to publish and sell the same.
Traduo em portugus autorizada da edio em ingls da obra Programing Android, First Edition ISBN 9781449389697
2011 Zigurd MedniekesLaird Dornin, Blake Meike e Masumi Nakamura. Esta traduo publicada e vendida
com a permisso da O'Reilly Media, Inc., detentora de todos os direitos para publicao e venda desta obra.
Novatec Editora Ltda. 2012.
Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. proibida a reproduo desta obra, mesmo
parcial, por qualquer processo, sem prvia autorizao, por escrito, do autor e da Editora.
Editor: Rubens Prates
Traduo: Rafael Zanolli
Reviso tcnica: Edgard Damiani
Reviso gramatical: Marta Almeida de S
Editorao eletrnica: Carolina Kuwabata
ISBN: 978-85-7522-284-3
Histrico de impresses:
Abril/2012
Primeira edio
parte I
A parte I deste livro mostra como instalar e utilizar suas ferramentas, alm das
informaes necessrias sobre Java para que voc possa escrever cdigo funcional
para o Android. O texto tambm fornece instrues sobre como projetar e utilizar
bancos de dados SQL. Todos esses tpicos so elementos centrais no s do modelo
de aplicativo Android que criaremos, mas tambm de seu sistema de persistncia e
da implementao de padres de projeto essenciais em aplicativos Android.
16
captulo 1
Este captulo ensina a instalar o SDK (Software Development Kit, ou Kit de Desenvolvimento de Software) do Android e todos os softwares relacionados que possam vir
a ser necessrios. Ao final, voc ser capaz de executar um simples programa Hello
world (Ol mundo) em um emulador. Tanto sistemas Windows quanto Mac OSX
e Linux podem ser utilizados no desenvolvimento de aplicativos para o Android.
Neste captulo, carregaremos o software, apresentaremos as ferramentas do SDK e
indicaremos fontes de cdigos de exemplo.
No decorrer deste livro, e especialmente neste captulo, faremos referncia s instrues
disponveis em muitos sites que explicam como instalar e atualizar as ferramentas
utilizadas na criao de aplicativos Android. O local mais importante no qual voc
pode encontrar informaes e links para ferramentas o site de desenvolvedores do
Android: http://developer.android.com.
Nosso foco gui-lo pelo processo de instalao, com explicaes que devero ajudlo a compreender como se encaixam os elementos do Android e de suas ferramentas
de desenvolvimento, e at mesmo como os detalhes de cada elemento podem mudar.
Os links citados neste livro podem sofrer alteraes com o tempo. Descries e links
atualizados podem ser encontrados no site do livro. Voc pode encontrar um link
para o site na pgina de catlogo deste livro (http://oreilly.com/catalog/0636920010364).
Talvez seja interessante manter essa pgina aberta enquanto voc l o material, para
que voc possa consultar os links sem ter de digitar os URLs impressos no livro.
18
Programando o Android
19
Quando voc estiver lendo este texto, dependendo da verso atual do JDK disponvel,
os nmeros de verso podem ser diferentes dos que mostramos aqui.
Caso no esteja claro qual JRE voc est utilizando, ou se voc acredita que
esteja executando o JRE errado em um sistema Linux, utilize o comando a
seguir para mostrar os JREs disponveis e selecionar o mais adequado:
sudo update-alternatives --config java
20
Programando o Android
sua opo com diversos plug-ins. exatamente isso que voc far, ao adicionar o plugin ADT sua instalao do Eclipse. O artigo sobre requisitos do sistema no site de
desenvolvedores do Android lista trs opes de pacotes do Eclipse, como base para
instalao e uso do IDE no desenvolvimento de softwares para o Android:
Eclipse Classic (para o Eclipse 3.5 ou mais recente)
Eclipse IDE for Java Developers
Eclipse for RCP/Plug-in Developers
Qualquer uma dessas opes ser suficiente, ainda que, a menos que voc tambm
esteja desenvolvendo plug-ins para o Eclipse, escolher o pacote Classic ou Java Developers (EE ou padro) faa mais sentido. Os autores deste livro iniciaram utilizando o
pacote Java EE Developers e as capturas de tela que utilizamos refletem essa escolha.
O site de download do Eclipse determinar automaticamente para voc os downloads
especficos disponveis de acordo com seu sistema, mas voc ter de escolher entre
verses de 32 e 64 bits, de acordo com seu caso. Depois, voc far o download de um
arquivo compactado. Para instalar o Eclipse, abra esse arquivo e copie a pasta eclipse
para sua pasta base. O arquivo executvel para iniciar o Eclipse em seu sistema pode
ser encontrado na pasta que voc acabou de extrair do arquivo.
Estamos falando srio quando dizemos que voc deve instalar o Eclipse em sua
pasta home (ou em alguma outra pasta qual voc tenha acesso), especialmente
se voc tem diversas contas de usurio em seu sistema. Lembre-se de que sua
instalao do Eclipse ser apenas um elemento dentre os muitos agrupamentos
possveis de plug-ins, e que voc seguir personalizando-a com plug-ins dedicados ao desenvolvimento de software para o Android. Alm disso, atualizaes
do Eclipse so gerenciadas separadamente de outros softwares em seu sistema.
Por essas e por muitas outras razes, muito difcil instalar e utilizar satisfatoriamente o Eclipse como um comando disponvel para todos os usurios em seu
sistema. Para completar adequadamente uma instalao da forma que descrevemos, voc deve instalar o Eclipse em seu diretrio home e inicializ-lo a partir
desse endereo.
21
Figura 1.1 Na primeira execuo do Eclipse, voc ver essa tela de boas-vindas.
SDK do Android
Com o JDK e o Eclipse instalados, voc agora tem os prerrequisitos para o SDK do
Android e est pronto para instal-lo. O SDK do Android um conjunto de arquivos:
bibliotecas, executveis, scripts, documentao etc. Instalar o SDK significa fazer o
download da verso do SDK para sua plataforma e colocar seus arquivos em uma
pasta em seu diretrio home.
Para instalar o SDK, faa o download do pacote que corresponde ao seu sistema nesta
pgina: http://developer.android.com/sdk/index.html.
O download um arquivo compactado. Abra-o e extraia a pasta contida nele para
dentro de sua pasta home.
Se estiver utilizando uma verso de 64 bits do Linux, talvez seja necessrio instalar o pacote ia32-libs. Para verificar se esse pacote necessrio, tente executar
o comando adb (~/android-sdk-linux_*/platform-tools/adb). Caso seu sistema
informe que o adb no pode ser encontrado (apesar de ele estar presente no diretrio platform-tools), isso provavelmente significa que a verso atual do adb, e
possivelmente de outras ferramentas, no poder ser executada sem a instalao
do pacote ia32-libs. O comando para instalar o pacote ia32-libs o seguinte:
sudo apt-get install ia32-libs
22
Programando o Android
O SDK contm uma ou duas pastas para ferramentas: uma chamada tools e, a partir
da verso 8, outra chamada platform-tools. Essas pastas devem estar em seu path
(uma lista de pastas nas quais seu sistema pesquisa arquivos executveis quando
voc invoca um executvel a partir da linha de comando). Em sistemas Macintosh e
Linux, a definio da varivel de ambiente PATH feita no arquivo .profile (Ubuntu) ou
.bash_profile (Mac OS X) em seu diretrio home. Adicione uma linha a esse arquivo
que instrua a varivel de ambiente PATH a incluir o diretrio tools do SDK (entradas
individuais devem ser separadas por dois-pontos). Por exemplo, voc poderia utilizar a linha a seguir (substituindo ambas as instncias de ~/android-sdk-ARCH pelo
caminho completo de sua instalao do SDK do Android):
export PATH=$PATH:~/android-sdk-ARCH/tools:~/android-sdk-ARCH/platform-tools
Em sistemas Windows, clique em Iniciar e, depois, com o boto direito em Meu Computador,
escolha Propriedades. Depois, clique em Avanado e clique no boto Variveis de ambiente. Clique
duas vezes na varivel de sistema PATH e adicione o caminho das pastas. Faa isso no
final do valor dessa varivel (no altere nenhuma informao j presente!) e adicione
os dois caminhos ao final da linha, separados por ponto e vrgula, sem espaos em
branco antes ou depois deles. Por exemplo:
;C:\android-sdk-windows\tools;C:\android-sdk-windows\platform-tools
Depois de editar seu path no Windows, Mac ou Linux, feche e abra novamente os
prompts de comando ou terminais abertos para que sejam reconhecidas as novas
configuraes da varivel PATH (no Ubuntu, talvez voc tenha de efetuar novamente
seu login, a menos que seu programa de terminal esteja configurado como um shell
de login).
A imagem da figura 1.2 mostra o gerenciador do AVD e do SDK, com todas as verses
disponveis do SDK selecionadas para instalao.
23
Figura 1.2 Gerenciador de SDK e AVD que permite a instalao de nveis da API do Android.
24
Programando o Android
Utilizao do assistente Install New Software para download e instalao do plug-in ADT
Voc inicia o assistente Install New Software (Instalar Novo Software) selecionando o menu
Help > Install New Software (Figura 1.3). Para instalar o plug-in ADT, digite o URL a seguir,
no campo Work With (Trabalhar com), e pressione Enter: https://dl-ssl.google.com/android/
eclipse/ (Figura 1.4).
Assim que tiver adicionado o URL lista de sites para aquisio de novos plugins, voc ver uma entrada Developer Tools (Ferramentas do Desenvolvedor) na lista de
softwares disponveis.
Selecione o item Developer Tools, clicando na caixa de seleo ao seu lado, e clique no
boto Next. A tela seguinte pedir que voc aceite a licena para esse software. Depois
25
de faz-lo, clique em Finish e o ADT ser instalado. Voc ter de reiniciar o Eclipse para
completar a instalao.
Figura 1.4 Dilogo Install New Software do Eclipse mostrando o plug-in ADT como disponvel.
26
Programando o Android
Figura 1.5 Configurao da localizao do SDK no plug-in ADT do Eclipse utilizando o dilogo de
preferncias do Android.
27
projeto como um projeto Android, voc diz ao Eclipse que o plug-in ADT e outras
ferramentas do Android devero ser utilizados em conjunto neste projeto.
Informaes de referncia e instrues online detalhadas para criao
de um projeto Android podem ser encontradas neste endereo: http://
developer.android.com/guide/developing/eclipse-adt.html.
Inicie seu novo projeto com o comando de menu File > New > Android Project. Localize
a opo Android Project no dilogo New Project (ela deve estar sob uma seo intitulada
Android). Clique em Next e a caixa de dilogo New Project surgir (Figura 1.6).
28
Programando o Android
Target (Alvo)
As imagens do sistema Android que voc instalou no SDK surgem na lista de
alvos de compilao. Voc pode escolher uma delas, alm do fornecedor, da plataforma (nmero de verso do sistema operacional Android) e do nvel de API
correspondentes ao seu caso, identificando a verso para a qual seu aplicativo foi
construdo. A plataforma e o nvel de API representam os parmetros de maior
importncia: so eles que governam a biblioteca da plataforma Android com a
qual seu aplicativo ser compilado e o nvel de API aceito APIs com um nvel
mais alto do que o selecionado no estaro disponveis para o seu programa. Por
ora, escolha a verso mais recente do sistema operacional Android e o nvel de
API que voc instalou.
29
Activity (Atividade)
Uma atividade uma unidade de interface de usurio interativa de um aplicativo
Android, que geralmente corresponde a um grupo de objetos de interface de
usurio que ocupam a tela inteira. Opcionalmente, quando voc cria um projeto,
pode escolher a criao do esqueleto de uma atividade. Caso voc esteja criando
um aplicativo visual (e no um servio, que pode ser destitudo de representao
visual na interface do usurio), essa uma forma conveniente de criar a atividade
com a qual o aplicativo iniciar. Nesse exemplo, voc deve criar uma atividade
com o nome TestActivity.
Figura 1.7 Visualizao do Package Explorer, mostrando os arquivos e componentes que fazem parte do
projeto.
30
Programando o Android
31
com o intuito de executar o programa que acabamos de criar com o assistente New
Android Project.
Voc ter de criar um AVD com uma imagem de sistema que no seja mais recente
do que a verso especificada para o projeto que voc criou. Primeiro, pressione o
boto New.... Voc ver a caixa de dilogo Create New Android Virtual Device (AVD), na qual voc
especifica os parmetros de seu novo AVD (Figura 1.9):
32
Programando o Android
Essa tela permite que voc defina os parmetros para seu novo AVD:
Name (Nome)
O nome de seu AVD. Voc pode utilizar qualquer nome para um AVD, mas prefira
um nome que indique a imagem de sistema utilizada.
Target (Alvo)
O parmetro Target define qual imagem de sistema ser utilizada nesse AVD.
Ela deve ser a mesma, ou mais recente, que a verso selecionada como alvo de
compilao em seu primeiro projeto para o Android.
Skin
O skin de um AVD define principalmente o tamanho da tela. Voc no ter
de alterar a configurao padro para verificar se sua instalao funciona, mas
interessante emular diferentes tamanhos de tela para verificar se seus layouts
funcionam em dispositivos de resolues distintas.
Hardware
O campo Hardware da configurao do AVD permite que voc defina parmetros
indicando qual hardware opcional est presente. Voc no ter de alterar as configuraes padro para este projeto.
Preencha os campos Name, Target e SD Card e crie um novo AVD pressionando o boto
Create AVD. Caso voc no tenha criado um AVD com uma imagem que corresponda
a, ou seja mais recente do que a verso especificada em seu projeto para o Android,
voc no ser capaz de executar o programa.
33
Para executar seu aplicativo, clique com o boto direito no projeto que voc criou e,
no menu de contexto, selecione Run As... > Android Application.
Se o AVD que voc criou for compatvel com o aplicativo criado, ele inicializar o
sistema operacional Android, iniciando seu aplicativo. Voc dever ver seu aplicativo
sendo executado no AVD de forma parecida com o que temos na figura 1.10.
Caso voc tenha mais de um AVD compatvel configurado, a caixa de dilogo Android
Device Chooser surgir, pedindo que voc selecione entre os AVDs ou entre os dispositivos Android conectados ao seu sistema (se houver), ou ainda que escolha um
AVD para iniciar. A figura 1.11 exibe o Android Device Chooser, mostrando um AVD
que est sendo executado e outro que pode ser iniciado.
34
Programando o Android
Caso voc esteja utilizando um sistema Linux, ter de criar um arquivo rules para
seu dispositivo Android.
Caso voc esteja utilizando um Mac OS X, nenhuma configurao ser necessria.
Informaes detalhadas de referncia sobre depurao USB podem ser encontradas
neste endereo: http://developer.android.com/guide/developing/device.html.
Voc tambm ter de habilitar o recurso de depurao USB em seu dispositivo Android. Na maioria dos casos, voc iniciar o aplicativo Settings, selecionar Applications,
depois Development e ento ver uma opo para habilitar ou desabilitar a depurao USB.
Se um AVD estiver configurado ou sendo executado, o Android Device Chooser surgir, mostrando tanto o dispositivo Android conectado quanto o AVD.
Selecione o dispositivo e o aplicativo Android ser carregado e executado nele.
35
Componentes do SDK
O SDK do Android composto principalmente de componentes prontos para uso,
somados a outros, de propsitos especficos. Em muitos casos, configuraes, plugins e extenses adaptam esses componentes ao Android. O SDK do Android um
exemplo perfeito do desenvolvimento eficiente de um SDK moderno e completo. O
Google adotou essa abordagem para que pudesse disponibilizar rapidamente o Android no mercado. Voc experimentar isso em primeira mo medida que explora
seus componentes. Eclipse, a linguagem Java, QEMU e outras plataformas existentes,
ferramentas e tecnologias compem algumas das partes mais importantes do SDK
do Android.
Na criao do programa que confirma se sua instalao do SDK ocorreu corretamente,
voc j utilizou muitos dos componentes do SDK. Aqui, identificaremos e descreveremos os componentes do SDK envolvidos na criao de seu programa, assim como
outras partes do SDK que voc ainda utilizar.
36
Programando o Android
Informaes de thread
Informaes sobre as threads de cada processo podem ser acessadas na guia Threads,
no painel superior direito da janela DDMS.
37
Captura de tela
O comando Screen capture..., no menu Device, captura uma imagem a partir da tela
mostrada no dispositivo ou dispositivo virtual Android selecionado.
Logging
O painel inferior da janela do DDMS mostra um registro (log) da sada dos processos no dispositivo ou dispositivo virtual selecionado. Voc pode filtrar essas
informaes selecionando uma opo a partir dos botes na barra de ferramentas
acima do painel de registro.
38
Programando o Android
39
DDMS
Na seo Dalvik Debug Monitor Server (DDMS), que vimos antes neste captulo,
descrevemos o Dalvik Debug Monitor e mostramos como invocar a interface de
usurio DDMS a partir da linha de comando. A interface de usurio DDMS tambm
est disponvel dentro do Eclipse. Voc pode acess-la utilizando o comando Window >
Open Perspective > DDMS nos menus do Eclipse. Voc tambm pode acessar separadamente
cada viso que compe a perspectiva do DDMS, utilizando o menu Window > Show View
e selecionando, por exemplo, a visualizao Logcat.
40
Programando o Android
QEMU
O QEMU a base dos dispositivos virtuais Android. Alm disso, trata-se de uma ferramenta de ampla utilidade, empregada em diversos sistemas de emulao, mesmo fora
do SDK do Android. Ainda que voc configure o QEMU indiretamente, por meio do
gerenciador do AVD e do SDK, em algum momento voc pode ter de ajustar as configuraes de emulao de formas no aceitas pelas ferramentas do SDK, ou pode estar
curioso quanto s capacidades e limitaes do QEMU. Por sorte, ele tem uma comunidade
de usurios extensa e muito ativa, que pode ser encontrada em http://www.qemu.org.
41
Hierarchy Viewer
O visualizador de hierarquia exibe e permite a anlise da hierarquia de visualizao da atividade atual, ou de um dispositivo Android selecionado. Isso permite que
voc encontre e diagnostique problemas na hierarquia de suas visualizaes, mesmo
enquanto seu aplicativo est sendo executado, ou que voc analise a hierarquia das
visualizaes de outros aplicativos para ver como foram projetados. Ele tambm
permite que voc visualize uma representao ampliada da tela, com orientaes de
alinhamento que ajudam a identificar problemas nos layouts. Informaes detalhadas
sobre o Hierarchy Viewer podem ser encontradas neste endereo: http://developer.
android.com/guide/developing/tools/hierarchy-viewer.html.
Layoutopt
O Layoutopt um analisador esttico que opera nos arquivos de layout XML e que
pode diagnosticar problemas com os layouts do Android. Informaes detalhadas
sobre o Layoutopt podem ser encontradas neste endereo: http://developer.android.
com/guide/developing/tools/layoutopt.html.
Monkey
O Monkey uma ferramenta de automao de testes, executada em seu emulador
ou dispositivo, que invocada utilizando outra ferramenta do SDK: o adb. O adb
permite que voc inicie um shell em um emulador ou dispositivo, a partir do qual o
monkey invocado de maneira semelhante a este exemplo:
adb shell monkey --wait-dbg -p your.package.name 500
Essa invocao envia 500 eventos aleatrios ao aplicativo especificado (pelo nome do
pacote), aguardando at que um depurador seja anexado para disparar os eventos.
Informaes detalhadas sobre o monkey podem ser encontradas neste endereo:
http://developer.android.com/guide/developing/tools/monkey.html.
sqlite3
O Android utiliza o SQLite como banco de dados em vrios sistemas, e fornece APIs
para os aplicativos, que tornam o SQLite conveniente para armazenamento e apresentao de dados. O SQLite tambm tem uma interface de linha de comando, e o
comando sqlite3 permite que desenvolvedores despejem (dump) esquemas de bancos
de dados e realizem outras operaes em bancos de dados do Android.
Esses bancos de dados esto, evidentemente, em um dispositivo Android ou contidos em um dispositivo virtual Android (AVD), e, portanto, o comando sqlite3 est
disponvel no shell adb. Instrues detalhadas para acessar a linha de comando do
42
Programando o Android
sqlite3, a partir do shell adb, podem ser encontradas neste endereo: http://developer.
android.com/guide/developing/tools/adb.html#shellcommands. Falaremos do sqlite3 na
seo Exemplo de manipulao do banco de dados utilizando sqlite3, no captulo 10.
keytool
O keytool gera chaves criptografadas e utilizado pelo plug-in ADT para criar chaves
temporrias, com as quais ele assina o cdigo para depurao. Na maioria dos casos,
voc utilizar essa ferramenta para criar um certificado de assinatura quando do
lanamento de seus aplicativos, como descrito na seo Criao de um certificado
autoassinado, no captulo 4.
Zipalign
O Zipalign permite acesso otimizado aos dados das verses de produo de aplicativos
Android. Essa otimizao deve ser realizada apenas depois de o aplicativo ter sido
assinado para lanamento (release), uma vez que a assinatura afeta o alinhamento
dos bytes. Informaes detalhadas sobre o Zipalign podem ser encontradas neste
endereo: http://developer.android.com/guide/developing/tools/zipalign.html.
Draw9patch
Um 9 patch um tipo especial de recurso do Android, composto de nove imagens,
sendo til quando voc deseja, por exemplo, botes que aumentem de tamanho sem
alterar o raio de seus cantos. O Draw9patch um programa de desenho especializado
para criao e visualizao de recursos desses tipos. Detalhes sobre o Draw9patch
podem ser encontrados neste endereo: http://developer.android.com/guide/developing/
tools/draw9patch.html.
Android
O comando android pode ser utilizado para invocar o gerenciador de SDK e AVD a
partir da linha de comando, como descrito nas instrues de instalao do SDK que
vimos na seo O SDK do Android, anteriormente neste captulo. Ele tambm pode
ser utilizado para criar um projeto Android a partir da linha de comando. Dessa forma,
ele faz com que sejam geradas todas as pastas de projetos, o manifesto, as propriedades
de compilao e o script ant para compilao do projeto. Mais detalhes sobre o uso
do comando android podem ser encontrados neste endereo: http://developer.android.
com/guide/developing/other-ide.html#CreatingAProject.
43
Mantendo-se atualizado
O JDK, o Eclipse e o SDK do Android so fornecidos separadamente. As ferramentas
de desenvolvimento de software para o Android podem sofrer alteraes muito rapidamente. por isso que, neste livro, e especialmente neste captulo, fazemos referncia
ao site de desenvolvedores do Android, para que voc tenha acesso s informaes
mais atualizadas e s verses compatveis mais recentes de suas ferramentas. Manter
suas ferramentas atualizadas e compatveis provavelmente ser uma tarefa necessria,
enquanto voc aprende a desenvolver softwares para o Android.
Windows, Mac OS X e Linux tm mecanismos de atualizao de sistema capazes de
manter seus softwares atualizados. Mas, em virtude da forma como o SDK do Android organizado, voc ter de manter atualizados sistemas de software separados,
utilizando mecanismos distintos.
44
Programando o Android
Normalmente, voc poder utilizar o boto Select All para instalar todas as atualizaes
disponveis. As atualizaes que voc ver listadas em seu sistema dependem dos
mdulos do Eclipse instalados e da ltima atualizao feita em seu Eclipse.
45
Se uma atualizao for necessria e voc estiver utilizando um sistema Mac ou Linux,
verifique as atualizaes disponveis para seu sistema e confira se uma nova verso do
JDK est includa. Se o JDK foi instalado em seu sistema pelo fornecedor ou se voc
o instalou a partir de seus repositrios de distribuio Linux, atualizaes estaro
disponveis por meio do mecanismo de atualizaes em seu sistema.
Cdigos de exemplo
Depois de instalar o SDK do Android e de verificar seu funcionamento, voc estar
pronto para iniciar sua explorao. Mesmo que voc no esteja acostumado s classes
do Android Framework e seja um novato em Java, explorar alguns cdigos de exemplo
servir para aumentar sua confiana na instalao do SDK, antes de avanarmos s
outras sees deste livro.
46
Programando o Android