Top Banner
Desenvolvimento de Aplicativos Wireless para Android TM Volume 1 Fundamentos do Android Terceira Edição Lauren Darcey Shane Conder
44

Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

Nov 10, 2018

Download

Documents

duonglien
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

Desenvolvimento de Aplicativos Wireless para AndroidTM

Volume 1

Fundamentos do AndroidTerceira Edição

Lauren DarceyShane Conder

Page 2: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

Do original:Android Wireless Application Development Vol. 1: Android Essentials – Third EditionCopyright©© 2012 Editora Ciência Moderna

������������ �� �������©����������������� ���������������������������

� ����������������� �� �������© ������ ��� ����!���� " ��������� ���

������������

#���������������� � ��$����� ��%������������������������ �&���&��

�� ���'��� ���(��� �� �) � �*��� ��� �������+������ ��%�,- �� ������ �

�� ��� ���

Editor: Paulo André P. Marques

Produtora Editorial: Laura Santos Souza

Diagramação: Daniel Jara

Tradução: Angelo Giuseppe Meira Costa (angico)

Capa: Daniel Jara (Baseada na Original)

Assistente Editorial: Amanda Lima da Costa

Várias Marcas Registradas aparecem no decorrer deste livro. Mais do quesimplesmente listar esses nomes e informar quem possui seus direitos de exploração, ouainda imprimir os logotipos das mesmas, o editor declara estar utilizando tais nomesapenas para fins editoriais, em benefício exclusivo do dono da Marca Registrada, semintenção de infringir as regras de sua utilização. Qualquer semelhança em nomespróprios e acontecimentos será mera coincidência.

FICHA CATALOGRÁFICA

DARCEY, Lauren. CONDER, Shane.

Desenvolvimento de Aplicativos Wireless para Android

Vol. 1 – Fundamentos do Android – Terceira Edição

Rio de Janeiro: Editora Ciência Moderna Ltda., 2012.1. Informática; 2. Linguagem de programação.

I — Título

ISBN: 978-85-399-0316-0 CDD 001.642

005.133

���������� ������������������� ������������������ ���������������������������� !"#�$%#&'%#(��!)"'*""#'&���"+��,!)"'*""#'&�-$��&��.�!��/���0����111����0����#$+'"

Page 3: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

Dedicatória

Este livro é dedicado a Chickpea.

Page 4: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento
Page 5: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

Introdução

Tendo por pioneira a Open Handset Alliance e o Google, o Android é uma popular plataforma móvel de código aberto e gratuita que abalou o mundo sem fios. Este livro, e o próximo volume, Android Wireless Application Development Volume II: Advanced Topics, oferece diretriz abrangente para equipes de desenvolvimento de software sobre projeto, desenvolvimento, teste, depuração e distribuição de aplicativos Android profissionais. Se você é desenvolvedor móvel veterano, poderá encontrar dicas e truques para organizar o processo de desenvolvimento e tirar vantagem das funcionalidades únicas do Android. Se você é novo no desenvolvimento móvel, estes livros fornecerão tudo de que você precisa para realizar uma transição transparente do desenvolvimento de software tradicional para o desenvolvimento móvel – especificamente, sua plataforma mais promissora: o Android.

Quem deve ler este livroEste livro inclui dicas para o desenvolvimento móvel de sucesso com base

em nossos anos na indústria móvel, e cobre tudo o que você precisa saber para levar um projeto Android de sucesso, do conceito à finalização. Nós cobrimos como o processo de software móvel difere do desenvolvimento de software tradicional, incluindo truques para poupar tempo valioso e as armadilhas a evitar. Independente do tamanho de seu projeto, este livro é para você.

Este livro foi escrito para várias públicos:

Desenvolvedores de software que querem aprender a desenvolver aplicativos Android profissionais. A massa deste livro é destinada aos desenvolvedores de software com experiência em Java que não necessariamente têm experiência no desenvolvimento móvel. Desenvolvedores mais maduros de aplicativos móveis podem aprender a tirar vantagem do Android e de como ele difere de outras tecnologias do mercado atual de desenvolvimento móvel;Pessoal de controle de qualidade com a tarefa de testar aplicativos Android. Sejam eles de teste interno ou externo, os engenheiros de controle de qualidade podem achar este livro valioso. Nós dedicamos vários capítulos às questões de CQ móvel, incluindo tópicos tais como o desenvolvimento de sólidos planos de teste e de sistemas de rastreamento de defeitos para aplicativos móveis, como gerenciar aparelhos, e como testar aplicativos exaustivamente, usando todas as ferramentas Android disponíveis;

Page 6: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

VI Desenvolvimento de Aplicativos Wireless para Android

Gerentes de projeto planejando e gerenciando equipes de desenvolvimento Android. Os gerentes podem usar este livro para ajudar a planejar, contratar e executar projetos Android do começo ao fim. Nós cobrimos o gerenciamento de riscos de projeto e como manter os projetos Android rodando sem problemas;Outros públicos. Este livro é útil não só para o desenvolvedor de software, mas também para a empresa em busca de potenciais aplicativos de mercado vertical, para o empreendedor que está pensando num aplicativo bacana para celular, e para quem procura alguma diversão com seu novo celular. Empresas procurando avaliar o Android para suas necessidades específicas (incluindo análise de viabilidade) também podem achar valiosa a informação fornecida. Qualquer pessoa com um aparelho Android e uma boa ideia para um aplicativo móvel pode pôr em uso a informação fornecida neste livro para diversão e ganho.

Questões chaves respondidas neste volumeEste volume do livro responde as seguintes questões:

1. Que é o Android? Como as versões do SDK diferem?2. Como o Android é diferente de outras tecnologias móveis, e como os

desenvolvedores podem tirar vantagem dessas diferenças?3. Como os desenvolvedores usam o Ambiente de Desenvolvimento Eclipse

para Java para desenvolver e depurar aplicativos Android no simulador e nos aparelhos?

4. Como os aplicativos Android são estruturados?5. Como os desenvolvedores projetam interfaces de usuário robustas para

móveis – especificamente para o Android?6. Que capacidades o SDK do Android tem e como os desenvolvedores

podem usá-las?7. Como o processo de desenvolvimento móvel difere do desenvolvimento

para desktop tradicional?8. Que estratégias de desenvolvimento funcionam melhor para o

desenvolvimento Android?9. O que os gerentes, desenvolvedores e testadores precisa procurar, quando

planejando, desenvolvendo e testando um aplicativo de desenvolvimento móvel?

10. Como as equipes móveis projetam aplicativos Android à prova de falhas para publicação?

Page 7: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

Introdução VII

11. Como as equipes móveis empacotam aplicativos Android para distribuição?

12. Como as equipes móveis ganham dinheiro com aplicativos Android?13. E, por fim, o que há de novo nesta edição do livro?

Como estes livros estão estruturadosNós escrevemos a primeira edição deste livro antes do SDK do Android ser

liberado. Agora, três anos e 14 liberações do SDK do Android depois, há tanta coisa a falar que tivemos de dividir o conteúdo do Desenvolvimento de Aplicativos Wireless para o Android em dois volumes separados para esta terceira edição.

O Desenvolvimento de Aplicativos Wireless para o Android Volume I: Fundamentos do Android foca nos fundamentos do Android, incluindo a configuração de seu ambiente de desenvolvimento, o entendimento do ciclo de vida do aplicativo, o design da interface de usuário, o desenvolvimento para diferentes tipos de dispositivos, e o processo do software móvel, do design e desenvolvimento até os testes e a publicação de aplicativos de nível comercial.

O Android Wireless Application Development Volume II: Advanced Topics foca nos tópicos avançados, incluindo a exploração de várias APIs do Android para segmentação, rede, serviços baseados em localização, sensores de hardware, animação, gráficos, e outros mais. A cobertura dos componentes avançados dos aplicativos Android, tais como serviços, bases de dados de aplicativos, provedores de conteúdo e intenções, também está incluída. Os desenvolvedores aprendem a projetar componentes avançados de interface de usuário e integrar profundamente seus aplicativos na plataforma. Por fim, os desenvolvedores aprendem a estender seus aplicativos além dos limites tradicionais, usando funcionalidades opcionais da plataforma Android, incluindo o Android Native Development Kit (NDK), o serviço Cloud-To-Device Messaging (C2DM), as APIs In-Application Billing do Android Market, as APIs do Google Analytics, e outros mais.

O Desenvolvimento de Aplicativos Wireless para o Android Volume I: Fundamentos do Android está dividido em seis partes. As quatro primeiras partes são primariamente de interesse dos desenvolvedores; a parte V fornece muitas informações úteis para gerentes de projeto e pessoal de controle de qualidade, bem como para desenvolvedores. A parte VI inclui vários apêndices úteis para ajudar você a ficar a par das ferramentas mais importantes do Android.

Aqui está uma visão geral das várias partes deste livro:

Page 8: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

VIII Desenvolvimento de Aplicativos Wireless para Android

Parte I: Visão Geral da Plataforma AndroidA parte I oferece uma introdução ao Android, explicando como ele difere de outras plataformas móveis. Você se familiarizará com o SDK do Android e suas ferramentas, instalará as ferramentas de desenvolvimento, e escreverá e rodará seu primeiro aplicativo Android – no simulador e num aparelho;

Parte II: Fundamentos de aplicativos AndroidA parte II apresenta os princípios de design necessários para se escrever aplicativos Android. Você aprenderá como os aplicativos Android são estruturados e como incluir recursos, tais como strings, gráficos e componentes da interface de usuário em seus projetos;

Parte III: Fundamentos de design de interfaces de usuário do AndroidA parte III mergulha mais fundo em como as interfaces de usuário são projetadas no Android. Você aprenderá sobre o elemento central da interface de usuário no Android: a View. Você também aprenderá sobre os controles mais comuns da interface de usuário fornecidos no SDK do Android;

Parte IV: O essencial do design de aplicativos AndroidA parte IV cobre as funcionalidades usadas pela maioria dos aplicativos Android, incluindo o armazenamento persistente de dados de aplicativos usando preferências e o trabalho com arquivos, diretórios e provedores de conteúdo. Você também aprenderá a projetar aplicativos que rodarão sem problemas em muitos dispositivos Android diferentes;

Parte V: Publicando e distribuindo aplicativos AndroidA parte V cobre o processo de desenvolvimento de software para móveis, do início ao fim, com dicas e truques para o gerentes de projetos, desenvolvedores de software, e pessoal de controle de qualidade;

Parte VI: ApêndicesA parte VI inclui dois guias úteis de iniciação rápida para as ferramentas de desenvolvimento Android – o simulador e o DDMS – bem como um apêndice de dicas e truques para o Eclipse.

Visão geral das mudanças nesta ediçãoQuando começamos a escrever a primeira edição deste livro, não havia

dispositivos Android no mercado. Um dispositivo Android se tornou disponível

Page 9: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

Introdução IX

logo depois que começamos a escrever, e ele só estava disponível nos Estados Unidos. Hoje, há centenas de dispositivos sendo lançados em todo o mundo – smartphones, tablets, leitores de e-books, e dispositivos especiais, tal como a Google TV. A plataforma Android passou por mudanças extensivas, desde que a primeira edição deste livro foi publicada. O SDK do Android tem muitas novas funcionalidades e as ferramentas de desenvolvimento receberam muitas atualizações muito necessárias. O Android, como tecnologia, agora está num sólido patamar, dentro do mercado móvel.

Nesta nova edição, nós aproveitamos a oportunidade para fazer um sério exame do conteúdo do livro. Mas não se preocupe, ele ainda é o livro que os leitores adoraram da primeira (e segunda!) vez; ele só está maior, melhor e mais abrangente. Para cobrir mais dos empolgantes tópicos disponíveis para os desenvolvedores Android, nós tivemos de dividir o livro em dois volumes. Além de adicionar toneladas de conteúdo novo, nós refizemos os testes e atualizamos todo o conteúdo existente (texto e código de amostra) para uso com os SDKs do Android mais recentes disponíveis, mantendo, ao mesmo tempo, a compatibilidade retroativa. A comunidade de desenvolvimento Android é diversa, e nós objetivamos suportar todos os desenvolvedores, independente dos dispositivos para os quais eles estão desenvolvendo. Isso inclui desenvolvedores que precisam objetivar quase todas as plataformas, de forma que a cobertura em algumas áreas chaves de SDKs mais antigos continua a ser incluída, porque essa é, frequentemente, a opção mais razoável para compatibilidade.

Aqui estão alguns dos destaques dos acréscimos e melhorias que fizemos nesta edição:

Cobertura das melhores e mais recentes ferramentas e utilitários do An-droid;Atualizações a todos os capítulos existentes, frequentemente com algu-mas seções inteiramente novas;Novos capítulos, que cobrem novas funcionalidades do SDK ou que se expandem além daquelas cobertas em edições anteriores;Aplicativos e código de amostra atualizados, convenientemente orga-nizados por capítulo;Tópicos como os arquivos de manifesto do Android, provedores de con-teúdo, projeto de aplicativos, e testes, agora têm seus próprios capítulos;Cobertura de tópicos quentes, como a compatibilidade de aplicativos, o projeto para diferentes dispositivos, e o trabalho com componentes de interface de usuário relativamente novos, tais como os fragmentos;

Page 10: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

X Desenvolvimento de Aplicativos Wireless para Android

Ainda mais dicas e truques de primeira, para ajudar você a projetar, desenvolver e testar aplicativos para diferentes dispositivos alvos, incluindo um capítulo totalmente novo sobre o tratamento de problemas de compatibilidade.

Como você pode ver, nós cobrimos muitas das funcionalidades mais quentes e empolgantes que o Android tem a oferecer. Nós não pegamos leve nesta revisão; tocamos em cada capítulo existente, atualizamos conteúdo e adicionamos muitos capítulos novos, também. Por fim, incluímos muitos acréscimos, esclarecimentos e, sim, até algumas correções com base no feedback de nossos fantásticos (e meticulosos) leitores. Obrigado!

Ambiente de desenvolvimento usado neste livroO código Android neste livro foi escrito usando os seguintes ambientes de

desenvolvimento:

1. Windows 7 e Mac OS X 10.7.x;2. IDE Eclipse Java versão 3.7 (Indigo) e versão 3.6 (Helios);3. Complemento JDT para o Eclipse e and Web Tools Platform (WTP);4. Kit de desenvolvimento Java SE ( JDK) 6 Update 26;5. SDK do Android versão 2.3.4, API nível 10 (Gingerbread MR1); SDK do

Android versão 3.2, API nível 13 (Honeycomb MR2); SDK do Android versão 4.0, API nível 14 (Ice Cream Sandwich)

6. Complemento ADT para o Eclipse 15.0.0;7. Ferramentas do SDK revisão 15.

Dispositivos Android: Samsung Nexus S, HTC Evo 4G, Motorola Droid 3, Samsung Galaxy Tab 10.1, Motorola Xoom, Motorola Atrix 4G, e Sony Ericsson Xperia Play.

A plataforma Android continua a crescer agressivamente na partilha do mercado, contra as plataformas móveis comcorrentes, tais como o Apple iOS e o BlackBerry. Novos e excitantes tipos de dispositivos chegam às mãos dos consumidores numa razão furiosa, com novas edições da plataforma Android aparecendo a todo o tempo. Os desenvolvedores não podem mais ignorar o Android como plataforma alvo, se quiserem alcançar os usuários de smartphone (ou de dispositivos inteligentes) de hoje e amanhã.

A mais recente atualização maior da plataforma Android, o Android 4.0

Page 11: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

Introdução XI

– frequentemente chamado pelo seu codinome, Ice Cream Sandwich, ou simplesmente ICS – combina as edições de plataforma Android 2.3.x (Gingerbread) centrada no smartphone, e Android 3.x (Honeycomb) centrada no tablet, num único SDK para todos os dispositivos inteligentes, sejam eles celulares, tablets, televisores, ou torradeiras. Este livro apresenta o SDK e as ferramentas mais recentes disponíveis, mas não foca neles em detrimento de versões populares legadas da plataforma. Este livro tem por objetivo ser uma referência geral para ajudar os desenvolvedores a suportar todos os dispositivos populares no mercado, hoje. Quando da escrita deste livro, apenas uma porcentagem muito pequena (menos de 5%) dos dispositivos de usuários estavam rodando o Android 3.0 ou 4.0. É claro que alguns desses dispositivo receberão atualizações, e os usuários comprarão novos dispositivos Ice Cream Sandwich, à medida que eles se tornarem disponíveis, mas, por ora, os desenvolvedores precisam preencher este espaço e suportar numerosas versões do Android para chegarem à maioria dos usuário em campo.

Então, o que isso significa para este livro? Significa que nós oferecemos tanto suporte a APIs legadas quanto discutimos algumas das APIs mais novas, disponíveis apenas em versões mais recentes do SDK do Android. Discutimos estratégias para suportar todos (ou, pelo menos, a maioria dos) usuários, em termos de compatibilidade. E fornecemos capturas de tela que destacam diferentes versões do SDK do Android, porque cada revisão maior trouxe consigo uma mudança no visual e uso da plataforma em geral. Dito isso, nós estamos considerando que você está baixando as ferramentas mais recentes do Android, de modo que fornecemos capturas de tela e passos que suportam as ferramentas mais recentes disponíveis, no momento desta escrita, não das ferramentas legadas. Estes são os limites que definimos, quando tentamos determinar o que incluir ou deixar de fora deste livro.

Materiais suplementares disponíveisO código fonte que acompanha este livro está disponível para download

no website do editor: www.informit.com/title/9780321813831. O código fonte também está disponível para download a partir do website de nosso livro: http://androidbook.blogspot.com/p/book-codedownloads.html (http://goo.gl/kyAsN). Você também encontrará vários tópicos do Android discutidos no website de nosso livro (http://androidbook.blogspot.com). Por exemplo, nós apresentamos feedback de leitores, questões, e outras informações. Você também pode encontrar links para nossos vários artigos técnicos no website de nosso livro.

Page 12: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

XII Desenvolvimento de Aplicativos Wireless para Android

Onde encontrar maiores informaçõesHá uma vibrante e útil comunidade de desenvolvedores Android, na Web.

Aqui está uma série de websites úteis para os desenvolvedores Android e seguidores da indústria wireless:

O website Android Developer: o site de referência do desenvolvedor e do SDK do Android:

http://developer.android.com or http://d.android.comStack Overflow: o website do Android com excelentes informações técnicas (completo com marcas) e um fórum de suporte oficial para desenvolvedores:

http://stackoverflow.com/questions/tagged/androidA Open Handset Alliance: fabricantes, operadoras e desenvolvedores Android:

http://www.openhandsetalliance.comO Android Market: compre e venda aplicativos Android:

http://www.android.com/marketMobiletuts+: tutoriais de desenvolvimento móvel, incluindo o Android:

http://mobile.tutsplus.com/category/tutorials/androidanddev.org: fórum de desenvolvedor Android:

http://www.anddev.orgAplicativos Android da equipe do Google: aplicativos Android de código aberto:

http://apps-for-android.googlecode.comSite de projeto de ferramentas Android: a equipe de ferramentas discute atualizações e mudanças:

https://sites.google.com/a/android.com/tools/recentFierceDeveloper: um jornal semanal para desenvolvedores sem fios:

http://www.fiercedeveloper.comRede de desenvolvedores Wireless: notícias diárias sobre a indústria wireless:

http://www.wirelessdevnet.comXDA-Developers Android Forum: do desenvolvimento em geral até ROMs:

http://forum.xda-developers.com/forumdisplay.php?f=564Developer.com: um site orientado pelo desenvolvedor com artigos móveis: http://www.developer.com

Page 13: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

Introdução XIII

Convenções usadas neste livroEste livro usa as seguintes convenções:

é usado para significar aos leitores que os autores querem dizer aos leitores que o código continuado aparece na mesma linha. Nenhuma indentação deve ser feita na linha continuada;Código ou termos de programação são apresentados em texto monoespaçado;Sentenças import Java, tratamento de exceção e verificação de erros são frequentemente removidas dos exemplos de código impresso, a bem da clareza e para manter o livro com uma extensão razoável.

Este livro também apresenta informações nas seguintes barras laterais:

DicaNotas oferecem informações adicionais que podem ser interes-santes ou relevantes.

NotaNotas oferecem informações adicionais que podem ser interes-santes ou relevantes.

AvisoAvisos oferecem dicas sobre armadilhas que podem ser encontra-das e como evitá-las.

Page 14: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento
Page 15: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

Sumário Resumido

I - Visão Geral da Plataforma Android .......................................... 1Capítulo 1 - Apresentando o Android ............................................................................... 3Capítulo 2 - Configurando seu ambiente de desenvolvimento Android .............33Capítulo 3 - Escrevendo seu primeiro aplicativo Android ........................................51Capítulo 4 - Dominando as ferramentas de desenvolvimento do Android ........ 81

II - Fundamentos de aplicativos Android ................................. 101Capítulo 5 - Entendendo a anatomia de um aplicativo Android .......................... 103Capítulo 6 - Definindo seu aplicativo usando o arquivo de manifesto do Android ................................................................................................................................. 123Capítulo 7 - Gerenciando recursos do aplicativo...................................................... 147

III - Fundamentos de design de interfaces de usuário do Android ............................................................................................189Capítulo 8 - Explorando os elementos de tela da interface de usuário ............... 191Capítulo 9 - Projetando interfaces de usuário com arranjos .................................225Capítulo 10 - Trabalhando com fragmentos ...............................................................265 Capítulo 11 - Trabalhando com diálogos .................................................................... 289

IV - O essencial do design de aplicativos Android ................. 303Capítulo 12 - Usando preferências do Android ........................................................ 305Capítulo 13 - Trabalhando com arquivos e diretórios ............................................. 319Capítulo 14 - Usando provedores de conteúdo ..........................................................333Capítulo 15 - Projetando aplicativos compatíveis .....................................................355

V - Publicando e distribuindo aplicativos Android ................ 381Capítulo 16 - O processo de desenvolvimento de Software Android ..................383Capítulo 17- Projetando e desenvolvendo aplicativos Android à prova de falhas .......................................................................................................................................411Capítulo 18 - Testando aplicativos Android ................................................................ 431Capítulo 19 - Publicando seu aplicativo Android ...................................................... 451

VI - Apêndices .................................................................................475Apêndice A - Guia de iniciação rápida do simulador do Android .......................477Apêndice B - Guia de iniciação rápida do DDMS do Android ............................ 503Apêndice C - IDE Eclipse Tipos e Truques ................................................................ 519Índice ..................................................................................................................................... 531

Page 16: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento
Page 17: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

IVisão Geral da Plataforma Android

Capítulo 1 - Apresentando o Android ...................... 3Breve história do desenvolvimento de software móvel ..................................3

Tempos atrás .....................................................................................................................................3“O tijolo” .............................................................................................................................................5O Protocolo de Aplicativos Sem-Fios (WAP) ..........................................................................7Plataformas Móveis Proprietárias ............................................................................................. 9

A Open Handset Alliance ....................................................................................12Google se torna sem-fios .............................................................................................................12Formando a Open Handset Alliance ........................................................................................12Fabricantes: projetando dispositivos Android ...................................................................... 13Operadoras móveis: oferecendo a experiência Android .................................................... 15Aplicativos impulsionam vendas de dispositivos: desenvolvendo aplicativos Android ............................................................................................................................................ 15Tirando vantagem de tudo o que o Android tem para oferecer ......................................16O mercado Android: onde estamos, agora .............................................................................16

Diferenças entre plataformas Android ............................................................18Android: uma plataforma da próxima geração .....................................................................18Gratuito e de Código Aberto .....................................................................................................19Ferramentas de desenvolvimento familiares e baratas .......................................................19Kit de desenvolvimento de software disponível gratuitamente ......................................20Linguagem familiar, ambientes de desenvolvimento familiares .....................................20Curva de aprendizado razoável para desenvolvedores .....................................................20Habilitando o desenvolvimento de aplicativos poderosos ...............................................20

Sumário

Page 18: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

XVIII Desenvolvimento de Aplicativos Wireless para Android

Integração rica e segura de aplicativos ....................................................................................21Nenhum obstáculo caro à publicação ......................................................................................21Um “mercado livre” para aplicativos ...................................................................................... 22Uma plataforma em crescimento ............................................................................................. 23

A plataforma Android ..........................................................................................24A arquitetura subjacente ao Android ...................................................................................... 25O Sistema Operacional Linux ................................................................................................... 26Ambiente de tempo de execução de aplicativos Android ................................................. 26Segurança e permissões .............................................................................................................. 26Aplicativos como usuários do sistema operacional ............................................................ 26Permissões de aplicativos explicitamente definidas ........................................................... 26Permissões ad-hoc limitadas ..................................................................................................... 27Assinatura de aplicativos para relacionamentos de confiança ........................................ 27Registro do desenvolvedor no mercado................................................................................. 28Desenvolvendo aplicativos Android ....................................................................................... 28Opções de linguagem de programação Android ................................................................. 28Nenhuma distinção feita entre aplicativos nativos e de terceiros .................................. 29Pacotes comumente usados ....................................................................................................... 29Estrutura do Aplicativo Android .............................................................................................30Serviços da Plataforma Android ..............................................................................................30

Resumo ...................................................................................................................31Referências e mais informações ................................................................................................ 31

Capítulo 2 - Configurando seu ambiente de desen-volvimento Android .................................................. 33Configurando seu ambiente de desenvolvimento .........................................33

Configurando seu sistema operacional para depuração de dispositivos ...................... 36Configurando seu hardware Android para depuração ...................................................... 36Atualizando o SDK do Android ............................................................................................... 38Problemas com o Kit de Desenvolvimento de Software Android .................................. 38

Explorando o SDK do Android ..........................................................................39Entendendo o acordo de licença do SDK do Android ....................................................... 39Lendo a documentação do SDK do Android ........................................................................40Explorando a estrutura central dos aplicativos Android ..................................................40Explorando as ferramentas centrais do Android ................................................................44O Eclipse e o complemento ADT ............................................................................................44

Page 19: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

Sumário XIX

O SDK do Android e os AVD Managers (controladores de AVD) .................................. 45O simulador do Android ............................................................................................................ 47Explorando os aplicativos Android de amostra ...................................................................48

Resumo .................................................................................................................. 50Referências e maiores informações .........................................................................................50

Capítulo 3 - Escrevendo seu primeiro aplicativo Android .........................................................................51Testando seu ambiente de desenvolvimento ................................................... 51

Criando um Dispositivo Android Virtual (AVD) para seu projeto Snake .................... 54Criando uma configuração de inicialização para seu projeto Snake ............................. 56Rodando o aplicativo Snake no Android Emulator ............................................................ 57

Construindo seu primeiro aplicativo Android ..............................................59Criando e configurando um novo projeto Android ...........................................................60Arquivos e diretórios centrais do aplicativo Android ........................................................ 62Criando um AVD para seu projeto .......................................................................................... 63Criando uma configuração de iniciação para seu projeto ................................................64Rodando seu aplicativo Android no simulador ................................................................... 65Depurando seu aplicativo Android no simulador ............................................................... 67Adicionando suporte a registro a seu aplicativo Android ................................................70Adicionando algum suporte a meios ao seu aplicativo ...................................................... 72Adicionando serviços baseados em localização a seu aplicativo..................................... 75Configurando a localização do simulador ............................................................................ 75Encontrando a última localização conhecida ....................................................................... 76Depurando seu aplicativo no Hardware ................................................................................ 77

Resumo ...................................................................................................................79Referências e maiores informações ......................................................................................... 79

Capítulo 4 - Dominando as ferramentas dedesenvolvimento do Android ...................................81Usando a documentação do Android ................................................................81Explorando o simulador do Android .............................................................. 84Visualizando dados registrados pelo aplicativo com o LogCat ...................85

Page 20: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

XX Desenvolvimento de Aplicativos Wireless para Android

Depurando aplicativos com o DDMS ...............................................................85Usando o Android Debug Bridge (ADB) .......................................................... 86Usando os editores de recursos e o UI Designer .............................................87Usando o visualizador de hierarquia do Android ......................................... 89

Iniciando o Hierarchy Viewer ..................................................................................................90Trabalhando no modo Layout View Mode ............................................................................91Otimizando sua interface de usuário ...................................................................................... 92Trabalhando no modo Pixel Perfect ........................................................................................ 93

Trabalhando com gráficos esticáveis Nine-Patch ......................................... 94

Trabalhando com outras ferramentas do Android ........................................97

Resumo .................................................................................................................. 98Referências e maiores informações .........................................................................................98

IIFundamentos de aplicativos Android

Capítulo 5 - Entendendo a anatomia de um aplica-tivo Android ...............................................................103Dominando a importante terminologia do Android ..................................103

Usando o contexto do aplicativo ......................................................................105Recuperando o contexto do aplicativo ................................................................................. 105Usando o Contexto do aplicativo .......................................................................................... 105Recuperando recursos do aplicativo ..................................................................................... 106Acessando preferências do aplicativo ................................................................................... 106Acessando arquivos e diretórios do aplicativo ................................................................... 106Recuperando bens do aplicativo ............................................................................................ 106

Realizando tarefas do aplicativo com atividades .........................................106

O ciclo de vida de uma atividade do Android ...............................................107

Page 21: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

Sumário XXI

Usando rechamadas da Activity para gerenciar o estado e os recursos do aplicativo .... 108Evitando que atividades sejam mortas ................................................................................... 111

Organizando componentes de atividades com fragmentos ........................113Gerenciando transições de atividades com intenções .................................115

Transitando entre atividades com intenções ....................................................................... 115Organizando a navegação do aplicativo com atividades e intenções ........................... 118

Trabalhando com serviços ................................................................................ 119Recebendo e difundindo intenções .................................................................120

Resumo ................................................................................................................. 121Referências e maiores informações ........................................................................................122

Capítulo 6 - Definindo seu aplicativo usando o arquivo de manifesto do Android .........................123Configurando aplicativos Android usando o arquivo de manifesto do Android .................................................................................................................123

Editando o arquivo de manifesto do Android .................................................................... 124

Gerenciando a identidade de seu aplicativo ..................................................129Aplicando versão a seu aplicativo .......................................................................................... 129Ajustando o nome e o ícone do aplicativo ........................................................................... 130

Impondo requisitos de sistema do aplicativo ................................................131Objetivando versões específicas do SDK .............................................................................. 131Impondo requisitos de plataforma do aplicativo ...............................................................135Trabalhando com bibliotecas externas ..................................................................................137Outros ajustes e filtros de configuração do aplicativo ......................................................138

Registrando atividades no manifesto do Android .......................................138Designando uma atividade de ponto de entrada primário para seu aplicativo usando um filtro de intenção ...................................................................................................139Configurando outros filtros de intenção ..............................................................................139Registrando outros componentes do aplicativo ................................................................. 141

Trabalhando com permissões .......................................................................... 141Registando as permissões de que seu aplicativo precisa .................................................. 141Registrando permissões que seu aplicativo impõe ............................................................143Explorando outros ajustes do arquivo de manifesto ........................................................ 144

Page 22: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

XXII Desenvolvimento de Aplicativos Wireless para Android

Resumo .................................................................................................................144Referências e maiores informações ........................................................................................145

Capítulo 7 - Gerenciando recursos do aplicativo ....................................................................147Que são recursos? ................................................................................................147

Armazenando recursos do aplicativo ................................................................................... 148Tipos de valor de recursos ....................................................................................................... 149Armazenando gráficos e arquivos ..........................................................................................152Armazenando outros tipos de recursos ................................................................................152Entendendo como os recursos são resolvidos ....................................................................152Acessando recursos programaticamente ..............................................................................153

Ajustando valores simples de recursos usando o Eclipse ........................... 154

Trabalhando com diferentes tipos de recursos ............................................158Trabalhando com recursos String ..........................................................................................158Strings em negrito, itálico e sublinhadas ..............................................................................159Usando recursos String programaticamente ...................................................................... 160Trabalhando com matrizes de String .................................................................................... 162Trabalhando com recursos booleanos ...................................................................................163Definindo recursos booleanos em XML ...............................................................................163Usando recursos booleanos programaticamente ...............................................................163Trabalhando com recursos inteiros........................................................................................163Definindo recursos inteiros em XML .................................................................................. 164Usando recursos inteiros programaticamente ................................................................... 164Trabalhando com cores............................................................................................................. 164Definindo recursos de cor em XML ......................................................................................165Usando recursos de cor programaticamente .......................................................................165Trabalhando com dimensões ...................................................................................................165Definindo recursos de dimensões em XML ........................................................................165Usando recursos de dimensão programaticamente ..........................................................167Trabalhando com desenháveis simples .................................................................................167Definindo recursos desenháveis simples em XML ............................................................167Usando recursos desenháveis simples programaticamente ........................................... 168Trabalhando com imagens ....................................................................................................... 169Trabalhando com gráficos esticáveis Nine-Patch ............................................................. 170Usando recursos de imagem programaticamente ............................................................. 170Trabalhando com animações ...................................................................................................172

Page 23: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

Sumário XXIII

Trabalhando com menus ...........................................................................................................174Trabalhando com arquivos XML ............................................................................................176Trabalhando com arquivos crus ..............................................................................................177Referências a recursos ................................................................................................................178

Trabalhando com arranjos ...............................................................................180

Referenciando recursos do sistema ................................................................185

Resumo .................................................................................................................187Referências e maiores informações ........................................................................................187

IIIFundamentos de design de interfaces de

usuário do Android

Capítulo 8 - Explorando os elementos de tela da interface de usuário .................................................. 191Apresentando as vistas e os arranjos do Android ........................................ 191

Apresentando a View do Android .......................................................................................... 191Apresentando os controles do Android ............................................................................... 192Apresentando o arranjo do Android ..................................................................................... 192

Exibindo texto para os usuários com a TextView ........................................193Configurando arranjo e tamanhos ........................................................................................ 194Criando links contextuais no texto ........................................................................................195

Recuperando dados do usuário com EditText .............................................. 197Recuperando entrada de texto usando controles EditText .............................................197Restringindo a entrada do usuário com filtros de entrada ............................................. 199

Ajudando o usuário com autocompletamento ............................................200

Oferecendo opções ao usuário com controles Spinner ............................. 203Permitindo seleções simples do usuário com botões, caixas de verificação,

Page 24: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

XXIV Desenvolvimento de Aplicativos Wireless para Android

chaves e grupos de rádio .......................................................................................................... 204Usando botões básicos ..............................................................................................................205Usando os controles CheckBox e ToggleButton ...............................................................207Usando RadioGroup e RadioButton .................................................................................... 209Recebendo datas e horas do usuário ......................................................................................212Usando indicadores para exibir dados ao usuário .............................................................215Indicando progresso com ProgressBar .................................................................................215Ajustando o progresso com SeekBar .....................................................................................217Exibindo dados de avaliação com a RatingBar .................................................................. 218Mostrando a passagem do tempo com o Chronometer ................................................. 220Exibindo a hora ............................................................................................................................221Usando o DigitalClock ...............................................................................................................221Usando o AnalogClock ..............................................................................................................221

Resumo ................................................................................................................ 222Referências e maiores informações .......................................................................................222

Capítulo 9 - Projetando interfaces de usuário com arranjos ...................................................................... 225Criando interfaces de usuário no Android .................................................. 225

Criando arranjos com recursos XML...................................................................................226Criando arranjos programaticamente ..................................................................................227

Organizando sua interface de usuário .......................................................... 230Usando subclasses de ViewGroup para projeto de arranjo .............................................231Usando subclasses de ViewGroup como contentores de View ......................................231

Usando classes de arranjo embutidas ............................................................ 232Usando FrameLayout ................................................................................................................234Usando LinearLayout ................................................................................................................ 237Usando RelativeLayout .............................................................................................................239Usando TableLayout ..................................................................................................................243Usando GridLayout ...................................................................................................................246Usando múltiplos arranjos numa tela ...................................................................................250

Usando classes de controles contentores .......................................................251Usando contentores dirigidos por dados .............................................................................251Organizando telas com abas .................................................................................................... 257Adicionando suporte a rolagem ............................................................................................. 261Explorando outros contentores de vistas ............................................................................262

Page 25: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

Sumário XXV

Resumo ................................................................................................................ 262Referências e maiores informações .......................................................................................263

Capítulo 10 - Trabalhando com fragmentos ....... 265Entendendo os fragmentos .............................................................................. 265

Entendendo o ciclo de vida dos fragmentos .......................................................................267Trabalhando com tipos especiais de fragmentos ...............................................................270Projetando aplicativos baseados em fragmentos ................................................................271

Usando o Android Support Package .............................................................. 283Adicionando suporte a fragmentos a aplicativos legados ...............................................283Usando fragmentos em novos aplicativos objetivando plataformas mais antigas ...284

Resumo ................................................................................................................ 286Referências e maiores informações .......................................................................................286

Capítulo 11 - Trabalhando com diálogos ............ 289Escolhendo a implementação de seu diálogo ............................................... 289

Explorando os diferentes tipos de diálogo ....................................................291

Trabalhando com diálogos: o método legado ............................................... 292Traçando o ciclo de vida de um diálogo...............................................................................292Trabalhando com diálogos personalizados .........................................................................296

Trabalhando com diálogos: o método com fragmentos............................. 296

Resumo ................................................................................................................300Referências e maiores informações ....................................................................................... 301

IVO essencial do design de aplicativos

Android

Page 26: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

XXVI Desenvolvimento de Aplicativos Wireless para Android

Capítulo 12 - Usando preferências do Android.. 305Trabalhando com preferências de aplicativo ............................................... 305

Determinando quando preferências são apropriadas ......................................................305Armazenando diferentes tipos de valores de preferências .............................................306Criando preferências privadas para uso por uma única atividade ...............................306Criando preferências compartilhadas para uso por múltiplas atividades ..................307Procurando e lendo preferências .......................................................................................... 308Adicionando, atualizando e excluindo preferências ........................................................ 308Reagindo a alterações de preferências .................................................................................. 310Encontrando dados de preferências no sistema de arquivos do Android ................... 311

Criando preferências de usuário gerenciáveis .............................................312Criando um arquivo de recursos de preferências ..............................................................312Usando a classe PreferenceActivity ........................................................................................315

Resumo .................................................................................................................317Referências e maiores informações ........................................................................................318

Capítulo 13 - Trabalhando com arquivos e diretórios ....................................................................319Trabalhando com dados do aplicativo no dispositivo .................................319Praticando um bom gerenciamento de arquivos ........................................ 320Entendendo as permissões de arquivo do Android .....................................321

Trabalhando com arquivos e diretórios ........................................................ 322Explorando os diretórios de aplicativos Android .............................................................323Trabalhando com outros diretórios e arquivos no sistema de arquivos do Android .........................................................................................................................................328

Resumo .................................................................................................................331Referências e maiores informações ........................................................................................331

Capítulo 14 - Usando provedores de conteúdo .. 333Explorando provedores de conteúdo do Android ........................................333

Usando o provedor de conteúdo MediaStore .................................................................... 335Usando o provedor de conteúdo CallLog ........................................................................... 337Usando o provedor de conteúdo Browser ..........................................................................339

Page 27: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

Sumário XXVII

Usando o provedor de conteúdo CalendarContract .........................................................341Usando o provedor de conteúdo UserDictionary .............................................................342Usando o provedor de conteúdo VoicemailContract ......................................................342Usando o provedor de conteúdo Settings ...........................................................................342Usando o provedor de conteúdo Contacts .........................................................................342Trabalhando com o provedor de conteúdo legado Contacts .........................................343

Modificando dados dos provedores de conteúdo ........................................ 349Adicionando registros ...............................................................................................................349Atualizando registros .................................................................................................................351Excluindo registros .....................................................................................................................351

Usando provedores de conteúdo de terceiros ...............................................352

Resumo .................................................................................................................353Referências e maiores informações ....................................................................................... 353

Capítulo 15 - Projetando aplicativos compatíveis ............................................................... 355Maximizando a compatibilidade dos aplicativos .........................................355

Projetando interfaces de usuário para compatibilidade ........................... 358Trabalhando com fragmentos .................................................................................................359Explorando o Android Support Package .............................................................................360Suportando tipos específicos de tela .....................................................................................360Trabalhando com gráficos esticáveis Nine-Patch ..............................................................361Usando o princípio do quadrado funcional ........................................................................362

Fornecendo recursos alternativos do aplicativo ......................................... 363Entendendo como os recursos são resolvidos ...................................................................363Organizando recursos alternativos com qualificadores ..................................................365Fornecendo recursos para diferentes orientações ............................................................ 373Usando recursos alternativos programaticamente ........................................................... 373Organizando recursos do aplicativo eficientemente .......................................................374Projetando para Tablets, TVs e outros dispositivos novos ............................................. 375Projetando para dispositivos Tablet ...................................................................................... 375Projetando para dispositivos de TV Google ....................................................................... 377

Resumo .................................................................................................................379Referências e maiores informações .......................................................................................379

Page 28: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

XXVIII Desenvolvimento de Aplicativos Wireless para Android

VPublicando e distribuindo aplicativos

Android

Capítulo 16 - O processo de desenvolvimento de Software Android ................................................... 383Visão geral do processo de desenvolvimento móvel .................................. 383

Escolhendo uma metodologia de software ................................................... 384Entendendo os perigos de abordagens em cascata ...........................................................384Entendendo o valor da iteração .............................................................................................385

Coletando requisitos do aplicativo ................................................................. 385Determinando os requisitos do projeto ...............................................................................385Desenvolvendo casos de uso para aplicativos móveis ......................................................388Incorporando requisitos de terceiros ...................................................................................389Gerenciando uma base de dados de dispositivos ..............................................................389

Avaliando os riscos do projeto ........................................................................ 394Identificando dispositivos alvos .............................................................................................394Adquirindo dispositivos alvos ................................................................................................396Determinando a viabilidade dos requisitos do aplicativo ...............................................397Entendendo os riscos do controle de qualidade ................................................................398

Escrevendo a documentação essencial do projeto ...................................... 399Desenvolvendo planos de teste para fins de controle de qualidade ............................ 400Fornecendo documentação exigida por terceiros ............................................................. 401Fornecendo documentação para manutenção e portada ................................................ 401

Explorando os sistemas de gerenciamento de configuração .....................401Escolhendo um sistema de controle de fontes ................................................................... 401Implementando um sistema de versões de aplicativo que funcione ........................... 402

Desenvolvendo aplicativos móveis ................................................................ 406

Testando aplicativos móveis ............................................................................ 407

Page 29: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

Sumário XXIX

Distribuindo aplicativos móveis .................................................................... 407Determinando os mercados alvos ......................................................................................... 408

Suportando e mantendo aplicativos móveis ................................................408Acompanhar e atender a falhas reportadas por usuários ............................................... 409Testar atualizações de firmware ............................................................................................ 409Manter uma adequada documentação do aplicativo ....................................................... 409Gerenciar mudanças ativas no servidor .............................................................................. 409Identificar oportunidades de portada de baixo risco ....................................................... 410

Resumo .................................................................................................................410

Capítulo 17 - Projetando e desenvolvendo aplicati-vos Android à prova de falhas ................................ 411Melhores práticas no projeto de aplicativos móveis à prova de falhas.... 411

Atendendo às exigências dos usuários móveis ................................................................... 412Projetando interfaces de usuário para dispositivos móveis ........................................... 412Projetando aplicativos móveis estáveis e responsivos ..................................................... 414Projetando aplicativos móveis seguros ................................................................................ 416Projetando aplicativos móveis para máximo lucro ............................................................417Explorando padrões de qualidade de terceiros .................................................................. 418Projetando aplicativos móveis para facilidade de manutenção e atualização ........... 419Explorando diagnósticos de aplicativos ............................................................................... 419Explorando ferramentas do Android para design de aplicativos ................................. 421

Evitando erros tolos no design de aplicativos Android ............................. 422Melhores práticas no desenvolvimento de aplicativos móveis à prova de falhas .........................................................................................................422

Projetando um processo de desenvolvimento que funcione para o desenvolvimento móvel ............................................................................................................423Testar a viabilidade de seu aplicativo antecipada e frequentemente ...........................423Usando padrões de codificação, revisões e testes de unidade para melhorar a qualidade do código ...................................................................................................................424Tratando defeitos que ocorrem num único dispositivo ..................................................427Explorando ferramentas do Android para desenvolvimento ........................................428

Resumo ................................................................................................................ 429Referências e maiores informações .......................................................................................429

Page 30: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

XXX Desenvolvimento de Aplicativos Wireless para Android

Capítulo 18 - Testando aplicativos Android ........431Melhores práticas no teste de aplicativos móveis ........................................431

Projetando um sistema de rastreamento de defeitos em aplicativos móveis ............431Gerenciando o ambiente de testes .........................................................................................433Maximizando a cobertura dos testes ....................................................................................437Explorando ferramentas do Android para teste de aplicativos Android ....................447Evitando erros tolos no teste de aplicativos Android ......................................................448

Resumo ................................................................................................................ 448

Capítulo 19 - Publicando seu aplicativo Android .......................................................................451Escolhendo o modelo certo de distribuição ..................................................451

Protegendo sua propriedade intelectual ..............................................................................452Cobrando ao usuário .................................................................................................................453Empacotando seu aplicativo para publicação ....................................................................455Preparando seu código para empacotamento ....................................................................455Preparando o pacote de seu aplicativo para o Android Market ....................................457Empacotando e assinando seu aplicativo ............................................................................458Testando a versão de liberação do pacote de seu aplicativo ........................................... 461Distribuindo seu aplicativo...................................................................................................... 461

Publicando no Android Market .......................................................................461Subscrevendo-se para uma conta de desenvolvedor no Android Market .................462Transferindo seu aplicativo para o Android Market ........................................................464Transferindo recursos de marketing do aplicativo ...........................................................465Configurando detalhes da listagem do aplicativo .............................................................465Configurando as opções de publicação do aplicativo ......................................................467Configurando informações de contato e consentimento do aplicativo .....................468Publicando seu aplicativo no Android Market ..................................................................469Gerenciando seu aplicativo no Android Market ...............................................................469

Publicando com outras alternativas .............................................................. 470Publicando seu aplicativo por conta própria ......................................................................472

Resumo .................................................................................................................473Referências e maiores informações .......................................................................................473

Page 31: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

Sumário XXXI

VIApêndices

Apêndice A - Guia de iniciação rápida do simula-dor do Android ......................................................... 477Simulando a realidade: a finalidade do simulador ......................................477

Trabalhando com Dispositivos Android Virtuais (AVDs) ......................... 480Usando o Android Virtual Device Manager ....................................................................... 481Criando um AVD ........................................................................................................................482

Iniciando o simulador com um AVD específico .......................................... 487Iniciando um simulador para rodar um aplicativo ...........................................................488Iniciando um simulador a partir do Android Virtual Device Manager ...................... 491

Configurando a localização de GPS do simulador .......................................491Fazendo chamadas entre duas instâncias do simulador ............................ 493Enviando mensagens entre duas instâncias de simulador ........................ 494

Interagindo com o simulador através do console ....................................... 495Usando o console para simular o recebimento de chamadas ........................................496Usando o console para enviar coordenadas de GPS ........................................................498Usando o console para monitorar o status da rede ..........................................................498Usando o console para manipular os ajustes de alimentação ........................................498Usando outros comandos do console ...................................................................................499

Curtindo o simulador .......................................................................................500

Entendendo as limitações do simulador ........................................................501Referências e maiores informações ....................................................................................... 501

Apêndice B - Guia de iniciação rápida do DDMS do Android ................................................................503Usando o DDMS com o Eclipse e como aplicativo isolado ........................ 503

Page 32: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

XXXII Desenvolvimento de Aplicativos Wireless para Android

Preparando-se para usar funcionalidades chaves do DDMS .................... 505

Trabalhando com processos, segmentos e a área de alocação dinâmica 505Anexando um depurador a um aplicativo Android ..........................................................506Interrompendo um processo...................................................................................................506Monitorando a atividade da área de alocação ....................................................................507Solicitando a coleta de lixo ......................................................................................................509Criando e usando um arquivo HPROF ................................................................................509

Usando o rastreador de alocação .....................................................................510Trabalhando com o File Explorer ........................................................................................... 511Navegando no sistema de arquivos de um simulador ou dispositivo ..........................512Copiando arquivos do simulador ou dispositivo ...............................................................513Copiando arquivos para o simulador ou dispositivo ........................................................514Excluindo arquivos no simulador ou dispositivo ...............................................................514Trabalhando com o controle do simulador .........................................................................515Simulando o recebimento de chamadas de voz ..................................................................515Simulando o recebimento de mensagens SMS ...................................................................515Enviando uma localização ........................................................................................................516Fazendo capturas de tela do simulador e do dispositivo ..................................................516Trabalhando com registros de aplicativos ............................................................................517

Apêndice C - Eclipse IDE Tips and Tricks ...........519Organizando seu espaço de trabalho do Eclipse ...........................................519

Integrando com serviços de controle de fonte ....................................................................519Reposicionando abas dentro de perspectivas .....................................................................520Maximizando janelas ..................................................................................................................521Minimizando janelas ..................................................................................................................521Visualizando janelas lado a lado ..............................................................................................521Visualizando duas seções do mesmo arquivo ......................................................................521Fechando abas indesejadas........................................................................................................521Mantendo as janelas sob controle ..........................................................................................522Criando filtros de registro personalizados .........................................................................522Procurando em seu projeto ..................................................................................................... 523Organizando tarefas do Eclipse ............................................................................................. 523

Escrevendo código em Java .............................................................................. 524Usando autocompletamento ...................................................................................................524Organizando Imports ................................................................................................................ 525

Page 33: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

Sumário XXXIII

Formatando código .............................................................................................525Renomeando quase tudo .................................................................................. 526Refazendo código ............................................................................................... 526Reorganizando o código ................................................................................... 528Usando o QuickFix ............................................................................................ 528Fornecendo documentação no estilo Javadoc .............................................. 529Resolvendo erros misteriosos de construção .............................................. 529

Índice ...........................................................................531

Page 34: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento
Page 35: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

IVisão Geral da Plataforma Android

1. Apresentando o Android

2. Configurando seu ambiente de desenvolvimento Android

3. Escrevendo seu primeiro aplicativo Android

4. Dominando as ferramentas de desenvolvimento Android

Page 36: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento
Page 37: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

Capítulo 1Apresentando o Android

A comunidade de desenvolvimento móvel está num ponto de estabilização. Os usuários móveis exigem mais opções, mais oportunidades de personalizar seus dispositivos, e mais funcionalidades. As operadoras móveis querem fornecer conteúdo com valor agregado a seus assinantes de uma forma gerenciável e lucrativa. Os desenvolvedores móveis querem a liberdade de desenvolver os poderosos aplicativos móveis que os usuários exigem, com o mínimo de obstáculos para o sucesso. Por fim, os fabricantes de celulares querem uma plataforma estável, segura e acessível para impulsionar seus dispositivos.

O Android surgiu como uma plataforma de virada de mesa para a comunidade de desenvolvimento móvel. Sendo uma plataforma inovadora e aberta, o Android está bem posicionado para atender às crescentes necessidades do mercado móvel, uma vez que ele continua a se expandir para além dos primeiros a adotar e comprar os sofisticados dispositivos inteligentes.

Este capítulo explica o que é o Android, como e por que ele foi desenvolvido, e onde a plataforma se encaixa no bem estabelecido mercado móvel. A primeira metade deste capítulo foca a história, e a segunda se concentra em como a plataforma Android funciona.

Breve história do desenvolvimento de software móvelPara entender o que torna o Android tão convincente, nós devemos examinar

como o desenvolvimento móvel evoluiu e como o Android difere das plataformas concorrentes.

Tempos atrásVocê lembra de quando um telefone era apenas um telefone? De quando

dependíamos de telefones fixos? De quando corríamos para o telefone, em vez de tirá-lo do bolso? De quando perdíamos nossos amigos num jogo de bola lotado e ficávamos horas esperando para nos reunirmos? De quando esquecíamos da

Page 38: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

4 Desenvolvimento de Aplicativos Wireless para Android

lista de compras (veja a figura 1.1) e tínhamos que encontrar um orelhão ou voltar novamente em casa para pegá-la?

Esses dias vão longe. Hoje, problemas comuns como esses são facilmente resolvidos com uma discagem rápida de um botão ou uma mensagem de texto simples, como “kd vc?” Ou “20?” Ou “Leite e...?”

Nossos celulares nos mantêm seguros e conectados. Agora, nós vagamos livremente, contando com nossos celulares não só para nos manter em contato com amigos, familiares e colegas de trabalho, mas também para nos dizer aonde ir, o que fazer e como fazê-lo. Mesmo os eventos mais domésticos parecem envolver meu celular, hoje em dia.

Figura 1.1 Os celulares se tornaram um acessório de compras crucial.

Considere a seguinte história real, que foi ligeiramente reforçada para dar um efeito:

Certa vez, numa noite quente de verão, eu estava alegremente falando com meus botões e cuidando do jantar, na minha nova casa, na zona rural de New Hampshire, quando um morcego voou sobre minha cabeça, matando-me de susto.

A primeira coisa que fiz – enquanto me abaixava – foi pegar o celular e mandar uma mensagem de texto para meu marido, que estava do outro lado do país, na época. Eu digitei: “Há um morcego em casa!”

Meu marido não respondeu de imediatato (um incidente digno de um divórcio, pensei na

época), então eu liguei para meu pai e lhe pedi sugestões sobre como me livrar do morcego.

Ele simplesmente riu.Irritada, eu tirei uma foto do morcego com meu celular a enviei para meu

marido e meu blog, simultaneamente deixando-o com um sentimento de culpa e informando o mundo a respeito de meu traiçoeiro encontro com a vida selvagem doméstica.

Por fim, eu procurei no Google “livrar-se de morcego” e depois segui as

Page 39: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

Capítulo 1 - Apresentando o Android 5

úteis instruções de faça-você-mesmo fornecidas na Web para pessoas na minha situação. Aprendi também que o final de agosto é quando os bebês morcegos frequentemente deixam o ninho pela primeira vez e aprendem a voar. Recém-informada de ter um bebê morcego em minhas mãos, eu calmamente peguei uma vassoura e consegui pôr o morcego pra fora de casa.

Problema resolvido – e fiz tudo isso com a ajuda do meu celular de confiança, o velho LG VX9800.

Meu ponto, aqui? Os dispositivos móveis de hoje não são chamados smartphones à toa. Eles podem resolver qualquer coisa – e nós contamos com eles para tudo, hoje em dia.

Perceba que eu usei meia dúzia de diferentes aplicativos móveis, ao longo desta história. Cada aplicativo foi desenvolvido por uma empresa diferente e tinha uma interface de usuário diferente. Alguns foram bem projetados; outros nem tanto. Eu paguei por alguns deles, e outros já vieram com o celular.

Como usuário, eu achei a experiência funcional, mas não terrivelmente inspiradora. Como desenvolvedor móvel, eu queria uma oportunidade para criar um aplicativo mais uniforme e poderoso, que pudesse cuidar de tudo o que eu fiz e muito mais. Eu queria construir uma melhor armadilha de morcegos, se você quisesse.

Antes do Android, os desenvolvedores móveis enfrentavam muitos obstáculos, quando se tratava de escrever aplicativos. Construir o melhor aplicativo, o aplicativo único, o aplicativo da concorrência, o aplicativo híbrido, e incorporar muitas tarefas comuns, como mensagens e chamadas, de uma forma familiar, eram muitas vezes objetivos irreais.

Para entender por quê, vamos dar uma breve olhada na história do desenvolvimento de software móvel.

“O tijolo”O Motorola DynaTAC 8000X foi o primeiro celular portátil comercialmente

disponível. Comercializado pela primeira vez em 1983, ele tinha 33 × 4,5 × 8,9 centímetros, pesava pouco mais de 1Kg, e permitia que você conversasse por pouco mais de meia hora. Era vendido por 3.995 dólares, além de pesadas taxas mensais de serviço e tarifas por minuto.

Nós o chamávamos de “o tijolo”, e o apelido pegou para muitos daqueles antigos celulares que nós alternadamente amamos e odiamos. Com o tamanho aproximado de um tijolo, com bateria suficiente para apenas meia conversação, esses primeiros celulares eram vistos principalmente nas mãos de executivos em viagens de negócio, de pessoal de segurança, e de ricos. Os celulares de

Page 40: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

6 Desenvolvimento de Aplicativos Wireless para Android

primeira geração eram simplesmente caros demais. As simples taxas de serviços eram capazes de levar à falência uma pessoa média, especialmente quando em deslocamento.

Os primeiros celulares não eram particularmente cheio de recursos (embora mesmo o Motorola DynaTAC, mostrado na figura 1.2, tivesse muitos dos botões com que nos familiarizamos, como o SEND, o END e o CLR). Estes primeiros celulares faziam pouco mais que fazer e receber chamadas e, se você tivesse sorte, havia um aplicativo simples de contatos que não era impossível de usar.

Os celulares de primeira geração foram projetados e desenvolvidos por fabricantes de telefones. A competição era feroz e segredos comerciais eram muito bem guardados. Os fabricantes não queriam expor o funcionamento interno de seus aparelhos, de modo que eles geralmente desenvolviam o software do telefone a portas bem fechadas. Como desenvolvedor, se você não fizesse parte deste círculo íntimo, não teria oportunidade de escrever aplicativos para os celulares.

Figura 1.2 O primeiro celular disponível no mercado: Motorola DynaTAC.

Foi nessa época que vimos os primeiros jogos de passa-tempo começarem a aparecer. A Nokia ficou famosa por colocar o game Serpente, dos anos 1970, em alguns de seus primeiros celulares monocromáticas. Outros fabricantes seguiram o exemplo, adicionando jogos como Pong, Tetris, e o Jogo da Velha.

Esses primeiros dispositivos eram falhos, mas fizeram algo de importante – eles mudaram a forma de se pensar em comunicação. À medida que os preços dos dispositivos móveis caía, que as baterias melhoravam, e que as áreas de recepção cresciam, mais e mais pessoas começavam a levar consigo esses úteis dispositivos. Logo os dispositivos móveis eram mais que simples novidade.

Os clientes começaram a pressionar por mais funcionalidades e mais jogos. Mas havia um problema. Os fabricantes de aparelhos não tinham motivação ou recursos para construir todos os aplicativos que os usuários queriam. Eles precisavam de alguma forma de fornecer um portal de serviços de entretenimento e

Page 41: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

Capítulo 1 - Apresentando o Android 7

informação, sem permitir o acesso direto ao aparelho.Que melhor maneira de fornecer estes serviços que não a Internet?

O Protocolo de Aplicativos Sem-Fios (WAP)Como ficou claro, permitir o acesso direto do telefone à Internet não se

ajustava bem para celulares.A esta altura, os websites profissionais eram totalmente coloridos e cheios de

textos, imagens e outros tipos de meios. Esses sites usavam JavaScript, Flash e outras tecnologias para aprimorar a experiência do usuário, e muitas vezes eram concebidos com uma resolução alvo igual ou superior a 800 × 600 pixels.

Quando o primeiro celular flip, o Motorola StarTAC, foi lançado, em 1996, mal tinha um visor LCD segmentado de 10 dígitos (modelos posteriores adicionariam um visor de texto em matriz de pontos). Enquanto isso, a Nokia lançava um dos primeiros celulares deslizantes, o 8110 – carinhosamente conhecido como “o celular do Matrix”, porque foi muito usado em filmes. O 8110 podia exibir quatro linhas de texto com 13 caracteres por linha. A figura 1.3 mostra alguns dos formatos comuns de celulares.

Figura 1.3 Vários formatos de celulares: a “barra de chocolate”, o deslizante (slider), e o flip.

Com suas telas de baixa resolução com tamanho de um selo de postagem e poder de armazenamento e processamento limitado, esses celulares não podiam tratar as intensas operações de dados exigidas pelos tradicionais navegadores web. As exigências de largura de banda para transmissão de dados também eram caras para o usuário.

O padrão do Protocolo de Aplicativos Sem-Fios (WAP, na sigla em inglês) surgiu para atender a estas questões. Simplificando, o WAP era uma versão reduzida do HTTP, que é o protocolo da espinha dorsal da World Wide Web.

Page 42: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

8 Desenvolvimento de Aplicativos Wireless para Android

Diferentemente dos navegadores web tradicionais, os navegadores WAP foram projetados para rodar dentro das limitações de memória e de largura de banda dos celulares. Os websites de terceiros serviam páginas escritas numa linguagem de marcação chamada Wireless Markup Language (WML). Estas páginas eram então exibidas no navegador WAP do celular. Os usuários navegavam como na Web, mas as páginas eram muito mais simples no design.

A solução WAP foi ótima para os fabricantes de aparelhos. A pressão diminuía – eles podiam escrever um navegador WAP que acompanhasse o aparelho, e deixar que os desenvolvedores produzissem os conteúdos que os usuários queriam.

A solução WAP foi ótima para as operadoras móveis. Elas podiam fornecer um portal WAP personalizado, direcionando seus assinantes para o conteúdo que queriam oferecer, e arrecadar as tarifas de dados associadas à navegação, que muitas vezes eram elevadas.

Pela primeira vez, os desenvolvedores tiveram a oportunidade de desenvolver conteúdo para usuários de celulares, e alguns o fizeram, com sucesso limitado. Poucos ganharam algum impulso nos mercados de consumo, porque o conteúdo era de valor limitado e a experiência do usuário final deixava muito a desejar.

A maioria dos primeiros sites WAP eram extensões dos websites de marcas mais populares, como o CNN.com e o ESPN.com, que estavam à procura de novas maneiras de estender seu alcance a leitores. De repente, os usuários de celulares acessavam notícias, cotações de ações e placares esportivos em seus telefones.

A comercialização de aplicativos WAP era difícil, e não havia mecanismo de cobrança embutido. Alguns dos aplicativos WAP comerciais mais populares que surgiram neste tempo eram simples catálogos de sons de chamada e de papel de parede que permitiam pela primeira vez que os usuários personalizassem seus celulares. Por exemplo, um usuário navegava um site WAP e solicitava um item específico. Ele preenchia um formulário de pedido simples, com o número de seu celular e modelo de aparelho. Cabia ao provedor de conteúdo oferecer um arquivo de imagem ou áudio compatível com o dado celular. Pagamento e verificação eram tratados através de vários mecanismos de entrega por preço prêmio, tais como Short Message Service (SMS), Enhanced Messaging Service (EMS), Multimedia Messaging Service (MMS), e WAP Push.

Os navegadores WAP, especialmente nos primeiros tempos, eram lentos e frustrantes. Digitar longos URLs com o teclado numérico era oneroso. Páginas WAP eram frequentemente difíceis de navegar. A maioria dos sites WAP eram escritos uma vez para todos os celulares e não levavam em conta as especificações

Page 43: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

Capítulo 1 - Apresentando o Android 9

de aparelhos individuais. Não importava se o celular do usuário final tinha uma grande tela colorida ou uma tela monocromática do tamanho de um selo; o desenvolvedor não podia adequar a experiência do usuário. O resultado era uma experiência medíocre e não muito atraente para todos os envolvidos.

Os provedores de conteúdo frequentemente não se preocupavam com um site WAP e, ao invés, simplesmente anunciavam em breves códigos SMS na TV e em revistas. Neste caso, o usuário enviava uma mensagem SMS premium com um pedido de um papel de parede ou som específico, e o provedor de conteúdo o enviava de volta. As operadoras móveis, em geral, gostavam desses mecanismos de entrega, porque recebiam uma grande porção de cada taxa do serviço de mensagens.

O WAP ficou aquém das expectativas comerciais. Em alguns mercados, como no japonês, ele floresceu, enquanto em outros, como nos Estados Unidos, ele não decolou. As telas de celulares eram muito pequenas para a navegação. Ler um fragmento de frase por vez, e depois esperar segundos que o próximo segmento baixasse, arruinou a experiência do usuário, especialmente porque cada segundo de download era frequentemente cobrado ao usuário. Os críticos começaram a chamar o WAP de “espere e pague” (em inglês, Wait And Pay).

Por fim, as operadoras móveis que proviam o portal WAP (a página base omissiva carregada quando você iniciava seu navegador WAP), muitas vezes restringia os sites WAP que eram acessíveis. O portal permitia que a operadora restringisse o número de sites pelos quais os usuários poderiam navegar, e canalizar os assinantes para provedores de conteúdo preferenciais da operadora e excluir sites de concorrentes. Este tipo de abordagem de jardim murado desencorajou ainda mais os desenvolvedores de terceiros, que já enfrentavam dificuldades em remunerar os aplicativos, a escrever aplicativos.

Plataformas Móveis ProprietáriasNão era surpresa que os usuários queriam mais – eles sempre quererão mais.Escrever aplicativos robustos com WAP, tais como jogos de gráficos intensivos,

era quase impossível. A doce população de 18 a 25 anos – as crianças com renda disponível mais provável de personalizar seus aparelhos com papéis de parede e sons de chamada – olhou para seus sistemas de jogos portáteis e pediu um dispositivo que fosse tanto um telefone quanto um dispositivo de jogos, ou um telefone e um reprodutor de músicas. Eles argumentaram que, se dispositivos tais como o Game Boy da Nintendo podiam proporcionar horas de entretenimento com apenas cinco botões, por que não bastava adicionar capacidades de telefone? Outros olhavam para suas câmeras digitais, Palms, Blackberries, iPods, e até para

Page 44: Desenvolvimento de Aplicativos Wireless para AndroidTM · VI Desenvolvimento de Aplicativos Wireless para Android i Gerentes de projeto planejando e gerenciando equipes de desenvolvimento

10 Desenvolvimento de Aplicativos Wireless para Android

seus laptops e faziam a mesma pergunta. O mercado parecia estar à beira de convergência dos dispositivos.

Memória estava ficando mais barata, baterias estavam ficando cada melhores e PDAs e outros dispositivos embutidos estavam começando a rodar versões compactas de sistemas operacionais comuns, tais como Linux e Windows. O tradicional desenvolvedor de aplicativos de área de trabalho de repente se tornou um personagem no mercado de dispositivos embutidos, especialmente com tecnologias de smartphones como o Windows Mobile, que eles achavam familiares.

Os fabricantes de aparelhos perceberam que, se quisessem continuar a vender os aparelhos tradicionais, eles precisavam mudar suas políticas protecionistas relativas ao design do aparelho e expor suas estruturas internas até certo ponto.

Surgiu, então, uma série de diferentes plataformas proprietárias – e os desenvolvedores ainda estão ativamente criando aplicativos para elas. Alguns smartphones rodavam o Palm OS (mais tarde conhecido como Garnet OS) e o RIM BlackBerry OS. A Sun Microsystems levou sua popular plataforma Java, e o J2ME emergiu (agora conhecido como Java Micro Edition [ Java ME]). O fabricante de chipsets Qualcomm desenvolveu e licenciou seu Binary Runtime Environment for Wireless (ambiente de execução binária para sem-fios, ou BREW, na sigla em inglês). Outras plataformas, como o Symbian OS, foram desenvolvidos por fabricantes de aparelhos, tais como Nokia, Sony Ericsson, Motorola, e Samsung. O iPhone OS da Apple (OS X iPhone) entrou para as fileiras em 2008. A figura 1.4 mostra vários celulares diferentes, todos com diferentes plataformas de desenvolvimento.

Muitas dessas plataformas têm programas de desenvolvimento associados. Esses programas mantêm as comunidades de desenvolvedores pequenas, examinadas, e sob acordos contratuais sobre o que eles podem e não podem fazer. Esses programas são muitas vezes necessários e os desenvolvedores devem pagar por eles.

Cada plataforma tem benefícios e desvantagens. É claro que os desenvolvedores adoram debater sobre qual plataforma é “a melhor” (dica: geralmente é a plataforma para a qual estamos atualmente desenvolvendo).

A verdade é que nenhuma plataforma saiu vitoriosa. Algumas plataformas são mais adequadas para a comercialização de jogos e enriquecimento – se sua empresa tiver o apoio de uma marca. Outras são mais abertas e apropriadas para aplicativos dos mercados hobista ou vertical. Nenhuma plataforma móvel é mais adequada para todos os aplicativos possíveis. Como resultado, o celular se tornou cada vez mais fragmentado, com todas as plataformas compartilhando parte do todo.