Visão geral do capítulo:
1.2.5 Licenciando o Android
O Android é lançado com duas diferentes licenças de código-fonte aberto. O kernel Linux é lançado com a GNU General Public License (GPL), uma vez que ela é reque- Vendendo aplicativos
Uma plataforma móvel é valiosa somente se existirem aplicativos para serem usados e aproveitados nela. Para isso, o tópico de comprar e vender aplicativos para Android é importante e nos dá uma oportunidade de destacar uma diferença chave entre o Android e o iPhone. A AppStore da Apple contém softwares para o iPhone — muitos deles. Mas o controle algo draconiano da Apple sobre o mercado de softwares para iPhone requer que todos os aplicativos sejam vendidos neste ambiente. Embora o controle de direitos digitais (DRM) da Apple seja invejado pelo mercado, esta abordagem pode criar um ambiente desafiador para os desenvolvedores de software, que podem preferir disponi- bilizar seus aplicativos por meio de múltiplos canais de distribuição.
Em contraste com a abordagem da Apple para a distribuição de aplicativos está a liberdade que os desenvolvedores Android desfrutam para vender seus aplicativos por meios tradicionais, como freeware e shareware, e comercialmente por meio de diversas lojas, incluindo o próprio web site! Para os vendedores de software que desejam uma experiência de compra no dispositivo, o Google lançou e continua a melhorar o Android Market. Para desenvolvedores de software que já possuem títulos em outras platafor- mas, tais como Windows Mobile, Palm e BlackBerry, mercados tradicionais de software como o Handango, (www.Handango.com) também dão suporte à venda de aplicativos Android. O Handango e seus similares são lojas importantes. Os consumidores novatos no Android vão provavelmente visitar sites como o Handango, porque este pode ser o lugar onde eles compraram um dos aplicativos favoritos do dispositivo anterior.
rida para qualquer um que licencie o kernel OS de código-fonte aberto. A platafor- ma Android, excluindo o kernel, é licenciada sob a Apache Software License (ASL). Embora os dois modelos de licença sejam orientados a código-fonte aberto, a prin- cipal diferença é que a licença Apache é considerada mais amigável ao uso comer- cial. Alguns puristas do código-fonte aberto podem achar errado qualquer coisa diferente de abertura completa, distribuição de código fonte e não comercialização. A ASL procura equilibrar os objetivos de de código-fonte aberto e forças de merca- do. Até então, havia ocorrido apenas um problema de licenciamento que afetara a comunidade Android, e ela teve mais a ver com uma área cinzenta nas imagens de sistema completo do que com o uso do Android por um fabricante em uma versão do produto. Atualmente, o Android está enfrentando desafios relativos a proprie- dade intelectual: tanto a Microsoft quanto a Apple estão abrindo processos contra a Motorola e a HTC devido aos aparelhos Android desses fabricantes.
A parte geral do livro, orientada ao mercado, terminou aqui! O restante do livro é focalizado no desenvolvimento de aplicativos Android. Qualquer discussão técni- ca sobre um ambiente de software deve incluir uma revisão das camadas que com- põem o ambiente, chamadas camadas por causa da sua construção em pilhas. A seguir, uma discriminação geral dos componentes da pilha Android.
1.3
As camadas do Android
A pilha do Android inclui uma impressionante gama de recursos para aplicativos móveis. De fato, examinando somente a arquitetura, sem o contexto de o Android ser uma plataforma projetada para ambientes móveis, seria fácil confundir o An- droid com um ambiente computacional geral. Todos os maiores componentes de uma plataforma computacional estão presentes. Aqui temos uma rápida descrição dos componentes proeminentes da pilha Android:
Um kernel Linux que fornece uma camada fundamental de abstração de hardwa-
re, além de serviços base como gerenciamento de processos, memória e sistema de arquivos. O kernel é onde os drivers específicos de hardware são implementa- dos — recursos como Wi-Fi e Bluetooth são encontrados aqui. A camada Android é projetada para ser flexível, com muitos componentes opcionais que dependem muito da disponibilidade do hardware específico de um dado dispositivo. Esses componentes incluem recursos como teclas sensíveis ao toque, câmeras, recepto- res GPS e acelerômetros.
Bibliotecas de código proeminentes, incluindo o seguinte:
– Tecnologia de navegador do WebKit, o mesmo mecanismo de código-fonte aberto por trás dos navegadores Safari do Mac e Safari Mobile do iPhone. O WebKit se tornou o padrão de fato para a maioria das plataformas móveis. – Suporte a bancos de dados via SQLite, um banco de dados SQL fácil de usar. – Suporte gráfico avançado, incluindo 2D, 3D, animações com a Scalable Ga-
mes Language (SGL), e OpenGL ES.
– Suporte a áudio e vídeo com o OpenCORE da PacketVideo e o framework de mídia Stagefright do Google.
As camadas do Android 11 – Capacidade Secure Sockets Layer (SSL) do projeto Apache.
Um conjunto de gerenciadores que fornece serviços para:
– Atividades e visualizações. – Janelas.
– Serviços baseados em localização. – Telefonia.
– Recursos.
O runtime do Android, que fornece:
– Pacotes básicos Java para um ambiente quase completo de programação Java. Observe que esse não é um ambiente Java ME.
– A Dalvik VM, que emprega serviços do kernel Linux para fornecer um am- biente de hospedagem de aplicativos Android.
Tanto aplicativos base e aplicativos de terceiros (como os que você vai construir com este livro) são executados com o Dalvik VM, além dos componentes que acabamos de listar. Você pode ver a rela- ção entre essas camadas na Figura 1.3.
DICA Sem dúvida, o desenvolvimen-
to de Android requer habilidades em programação Java. Para tirar o máximo proveito deste livro, revise seus conhe- cimentos de programação Java. Exis- tem muitas referências sobre Java na in- ternet e não há falta de livros sobre Java no mercado. Uma excelente fonte de títulos sobre Java pode ser encontrada em www.manning.com/catalog/java.
Agora que mostramos o diagrama de pilha obrigatória e apresentamos todas as camadas, vamos examinar em mais profundidade a tecnologia de tempo de execu- ção que sustenta o Android.