artigo-introdução ao android

14
Introdução à plataforma Android Tiago T. Wirtti 24 de maio de 2014 Resumo Nos últimos anos o mundo vivenciou o surgimento de algumas tecnologias surpreendentes. Entre elas está o Android. Ao contrário do que muitos pen- sam, Android não é apenas um sistema operacional para celular ou tablet, mas uma plataforma completa, que comporta, além de um sistema baseado em Linux, um ambiente de execução (runtime) e recursos para programação de alto nível na linguagem de programação Java. A plataforma Android, de- senvolvida e mantida pelo Google, é uma importante realização dos ideais de software livre e de padrão aberto, reunindo as iniciativas GNU, Linux, além de usar o poderoso conceito de VM (em inglês, virtual machine) populari- zado pela tecnologia Java. O presente trabalho tem como objetivo apresentar a plataforma Google Android ao leitor, mostrando sua origem, arquitetura básica, versões, problemas e novidades da última versão (Android 4.4), co- nhecida como Kitkat. Introdução Neste capítulo são apresentados os conceitos básicos relacionados à plataforma Android, seu início, arquitetura, características e versões. Apresen- taremos também o conceito de "fragmentação da plataforma Android", mostrando suas vantagens e desvantagens. Fecharemos o capítulo descrevendo as novida- des da versão 4.4 do Android, conhecida como Kitkat. É importante ressaltar que a plataforma Android está em constante evolução, portanto as fontes utilizadas são sempre as do próprio fabricante, o Google. Encorajamos o leitor a consultar às fontes indicadas no texto para obter informações mais atualizadas e aprofun- dadas. 1 O que é Android? O Android é uma plataforma de execução de aplicações desenvolvida e mantida pelo Google. Android possui um sistema operacional baseado no kernel do Linux para dispositivos móveis, um runtime (máquina virtual) para execução de apli- cações e utiliza linguagem Java para produção de novos programas. Android é aderente ao Open Source Initiative [1] e é considerado um software livre (embora nem todos concordem 1 ), sendo que sua forma de licenciamento preferencial é o 1 Richard Stallman discute no artigo "Is Android really free software?"[2] a diferença entre software open source e free software. O primeiro se caracteriza pela qualidade e redistribuição do software, o segundo tem como foco liberdade de escolha do usuário. 1

Upload: felipe-stein-rosa

Post on 28-Jan-2016

219 views

Category:

Documents


0 download

DESCRIPTION

Introdução a programação Android

TRANSCRIPT

Page 1: Artigo-Introdução Ao Android

Introdução à plataforma Android

Tiago T. Wirtti

24 de maio de 2014

Resumo

Nos últimos anos o mundo vivenciou o surgimento de algumas tecnologiassurpreendentes. Entre elas está o Android. Ao contrário do que muitos pen-sam, Android não é apenas um sistema operacional para celular ou tablet,mas uma plataforma completa, que comporta, além de um sistema baseadoem Linux, um ambiente de execução (runtime) e recursos para programaçãode alto nível na linguagem de programação Java. A plataforma Android, de-senvolvida e mantida pelo Google, é uma importante realização dos ideais desoftware livre e de padrão aberto, reunindo as iniciativas GNU, Linux, alémde usar o poderoso conceito de VM (em inglês, virtual machine) populari-zado pela tecnologia Java. O presente trabalho tem como objetivo apresentara plataforma Google Android ao leitor, mostrando sua origem, arquiteturabásica, versões, problemas e novidades da última versão (Android 4.4), co-nhecida como Kitkat.

Introdução Neste capítulo são apresentados os conceitos básicos relacionadosà plataforma Android, seu início, arquitetura, características e versões. Apresen-taremos também o conceito de "fragmentação da plataforma Android", mostrandosuas vantagens e desvantagens. Fecharemos o capítulo descrevendo as novida-des da versão 4.4 do Android, conhecida como Kitkat. É importante ressaltar quea plataforma Android está em constante evolução, portanto as fontes utilizadassão sempre as do próprio fabricante, o Google. Encorajamos o leitor a consultaràs fontes indicadas no texto para obter informações mais atualizadas e aprofun-dadas.

1 O que é Android?

O Android é uma plataforma de execução de aplicações desenvolvida e mantidapelo Google. Android possui um sistema operacional baseado no kernel do Linuxpara dispositivos móveis, um runtime (máquina virtual) para execução de apli-cações e utiliza linguagem Java para produção de novos programas. Android éaderente ao Open Source Initiative [1] e é considerado um software livre (emboranem todos concordem1), sendo que sua forma de licenciamento preferencial é o

1Richard Stallman discute no artigo "Is Android really free software?"[2] a diferença entre softwareopen source e free software. O primeiro se caracteriza pela qualidade e redistribuição do software, osegundo tem como foco liberdade de escolha do usuário.

1

Page 2: Artigo-Introdução Ao Android

Apache Software License, Version 2.0 [3]. Em alguns casos, como no do kernel doLinux, o licenciamento utilizado é o GLPv2 (em inglês, GNU GENERAL PUBLICLICENSE) [4]. Android é desenvolvido e mantido atualmente pelo grupo OpenHandset Aliance [5], liderado pelo Google e outras empresas. Seu código fontepode ser baixado da página do Android (Downloading and Building) [6].

Atualmente, segundo o site do Android (www.android.com) [7], há mais de900 milhões de aparelhos rodando este sistema.

2 Origem do Android

Em julho de 2005 a Google adquiriu a Android Inc., uma pequena empresa emPalo Alto, California, USA [8]. A partir da tecnologia da Android Inc. foi desen-volvida uma plataforma de telefone móvel baseada em Linux, flexível, aberta ede fácil migração para os fabricantes de aparelhos celulares.

Em outubro de 2008 foi lançado o primeiro celular com Android, o HTC Dream.Em novembro de 2009 foi lançado o Motorola Droid, considerado pela crítica comoum dos melhores aparelhos com Android. Em janeiro de 2010 o Google lançou oseu primeiro aparelho, o HTC Nexus One. O primeiro tablet a rodar com Android(versão 3.0) foi o Motorola Xoom, lançado em 24 de fevereiro de 2011 nos EUA[9].

Atualmente o mercado Android continua a crescer e o Google Play (market-place do Android) oferece em torno de 975 mil aplicativos para download!

3 Arquitetura da Plataforma Android

A arquitetura da plataforma Android é formada por várias camadas, como mos-trado na Figura 1. Como padrão nos sistemas operacionais modernos, a camadainferior deve dar suporte à funcionalidade das camadas superiores. Por isso, aseguir descrevemos as camadas da plataforma Android de baixo para cima.

• LINUX KERNEL: Formada pelos drivers que fornecem os serviços do hard-ware às camadas superiores. O kernel pode ser baixado tanto em códigofonte como em binário [11].

• LIBRARIES: Bibliotecas auxiliares que encapsulam recursos padrão do sis-tema operacional. Elas fornecem funcionalidades básicas para as camadassuperiores da arquitetura.

• ANDROID RUNTIME: Contém a máquina virtual do Android, denominadaDalvik, que é o interpretador do bytecode (código executável da máquinavirtual) do Android. O bytecode do Android tem o formato .dex (lembre-seque o formato do bytecode Java é .class).

• APPLICATION FRAMEWORK: Esta camada disponibiliza ao programa-dor o conjunto de recursos de alto nível necessários à criação de aplicativos

2

Page 3: Artigo-Introdução Ao Android

Figura 1: Arquitetura da plataforma Android [10].

Android. É com os recursos encapsulados nesta camada que as aplicaçõessão construídas e executadas.

• APPLICATIONS: Todas as camadas abaixo Figura (1) existem para que osaplicativos executem corretamente. É nesta camada que as aplicações sãoexecutadas.

4 Características da plataforma Android

O Android se estabeleceu entre as principais plataformas móveis do mercadomundial. Conheça a seguir as suas principais características.

• Layouts para tablets e outros aparelhos (handsets): Android roda em umavariedade de dispositivos que oferecem diferentes tamanhos de telas e den-sidades de resolução (dp, em inglês, density-independent pixel) [12, 13].Com esses recursos é possível programar aplicativos multitela, ou seja, querodam em dispositivos com diferentes tamanhos e formatos. A plataformaAndroid está adaptada para dispositivos VGA (maiores) e gráficos 2D, alémde suportar bibliotecas gráficas 3D baseadas em OpenGL ES (versão 2.0e, no Kitkat2, versão 3.0). Os layouts mais tradicionais de smartphones

2Kitkat é o nome da versão 4.4 do Android [14].

3

Page 4: Artigo-Introdução Ao Android

também são suportados.

• Armazenamento: Android possui uma engine de banco de dados que su-porta SQL conhecida com SQLite [15]. Com o SQLite é possível criar ban-cos, tabelas e realizar as operações CRUD (acrônimo, do inglês, Create,Read, Update e Delete), além de outras tarefas simples. Além do SQLite,exitem outras modalidades de armazenamento3.

• Navegador: No Android é possível desenvolver aplicações de duas manei-ras: com um aplicativo client-side (desenvolvido usando o Android SDK eentregue no dispositivo como um APK), ou como um aplicativo Web (desen-volvido seguindo os padrões Web e acessado através de um navegador Web- nada é instalado no dispositivo do cliente) [17]. O pacote android.webkitprovê ferramentas para programar navegação na Web.

• Mensagens: A API Android fornece classes como "android.telephony. Sms-Manager", que gerencia operações de SMS (em inglês, Short Message Ser-vice), tais como envio de dados, texto e mensagens do tipo pdu SMS; e "an-droid. telephony. SmsMessage", que representa a mensagem SMS [18].

• Máquina Virtual Dalvik: Dalvik é o gerenciador de runtime usado pelasaplicações e serviços de sistema do Android. Dalvik foi criada especifica-mente para o projeto Android [19]. De uma forma simplificada, Dalvik éuma VM que roda o bytecode específico do Android. O bytecode é o códigoexecutável da VM. No Android KitKat (versão 4.4) foi introduzida, em ca-rater experimental, uma nova VM denominada ART [20].

• Multimídia: O framework multimídia do Android inclui suporte a uma va-riedade de tipos comuns de mídia, facilitando a integração de áudio, ví-deo e imagens em um aplicativo [21]. É possível executar mídias de áudioou vídeo a partir de arquivos armazenados nos recursos da aplicação (rawresources), arquivos do sistema de arquivos, ou dados vindos de uma co-nexão de redes. Em todos os casos usando as APIs MediaPlayer (pacoteandroid.media.MediaPlayer).

• Suporte adicional de hardware: Com o Android é possível fazer uso de telasensível ao toque, câmera de vídeo, GPS, acelerômetro, além de aceleraçãode gráficos 3D.

• Ambiente de desenvolvimento (SDK, em inglês, Software Development Kit):O SDK do Android é composto por pacotes modulares que podem ser obti-dos separadamente através da ferramenta Android SDK Manager. Desta

3Além do SQLite, o Android possui outros mecanismos de armazenamento [16]: (1) Armazena-mento interno (em inglês, internal storage), que utiliza a memória interna do dispositivo. Nessamodalidade, o dado armazenado só é acessível pelo aplicativo que o criou e é excluído quando esteé apagado do dispositivo. (2) Armazenamento externo (em inglês, external storage), que é suportadopor todos os dispositivos Android e pode ocorrer em uma mídia removível (cartão SD, por exemplo) ouna memória interna (não removível) do dispositivo. Arquivos salvos no armazenamento externo po-dem ser lidos e modificados pelo usuário quando este habilita a comunicação USB entre o dispositivoAndroid e um computador.

4

Page 5: Artigo-Introdução Ao Android

forma, quando ocorre alguma atualização, basta obtê-la através do seu SDKManager [22].

5 Versões do Android

As versões do Android [23] são lançadas sempre que acontecem grandes inova-ções na plataforma. Elas são controladas pelo grupo de empresas Open HandsetAlliance, liderado pelo Google. Cada versão está associada a um ou mais APILevels [24], que definem as características daquela versão. A seguir mostramosrapidamente a cronologia das versões do Android:

• Cupcake4 (versão 1.5, API Level 3): Lançada em abril de 2009, com últimarevisão oficial em maio de 2010, tendo como base o kernel 2.6.27 do Linux;

• Donut (versão 1.6, API Level 4): Lançada em setembro de 2009, com últimarevisão oficial em maio de 2010, tendo como base o kernel 2.6.29 do Linux;

• Eclair (versões 2.0 a 2.1, API Levels 5, 6 e 7): Primeira versão lançada emjaneiro de 2010, com última revisão oficial em maio de 2010, usando comobase o kernel 2.6.29 do Linux;

• FroYo, de Frozen Yogurt (versão 2.2.x, API Level 8): Lançada em maio de2010, com última revisão oficial em julho de 2011, tendo como base o kernel2.6.32 do Linux;

• Gingerbread (versão 2.3.x, API Levels 9 e 10): Lançada em 6 de dezembrode 2011, tendo como base o kernel 2.6.35 do Linux;

• Honeycomb (versões 3.0 a 3.2, API Levels 11, 12 e 13): Lançada especial-mente para tablets em Janeiro de 2011, tendo como base o kernel 2.6.36 doLinux;

• Ice Cream Sandwich (versão 4.x, API Levels 14 e 15): Anunciada oficial-mente em 19 de outubro de 2011, tendo como base o kernel 3.0.1 do Linux;

• Jelly Bean (versão 4.1 a 4.3, API Levels 16, 17 e 18): Versão principal,lançada em 27 de junho de 2012, com atualização recebida em 24 de julhode 2013, tendo como base o kernel 3.0.31 do Linux;

• KitKat (versão 4.4, API Level 19): Lançada em 31 de outubro de 2013 (nosEUA) junto com o novo smartphone do Google, Nexus 5. Utiliza a versão3.8 do kernel Linux.

4Da versão Cupcake pra frente, todas têm nomes de doces ou sobremesas conhecidos. Não existeuma explicação oficial do Google para esse critério de nomeação. Antes da Cupcake o Google havialançado as versões Alpha e Beta. Outra curiosidade: as versões seguem ordem alfabética!

5

Page 6: Artigo-Introdução Ao Android

6 Fragmentação da plataforma

Atualmente há várias versões de Android no mercado, como mostra a Tabela 15.A essa grande variedade de versões rodando em diversos equipamentos de dife-rentes fabricantes se convencionou chamar de fragmentação da plataforma An-droid. A fragmentação da plataforma Android tem seus prós e contras [25]. Men-cionando primeiro as desvantagens, ressaltamos que os dispositivos Android dis-poníveis atualmente possuem várias formas e tamanhos (Figura 2), com enormevariedade de formatos (resolução) de tela, recursos e capacidade de processa-mento. Para efeito de comparação, a Figura 3 mostra a variedade de telas noiOS.

Figura 2: Variedade de tamanhos de tela no Android [25].

Outro problema relativo à fragmentação no Android é que existem várias ver-sões ativas ao mesmo tempo, adicionando mais complexidade ao problema dafragmentação. Em outras palavras, desenvolver aplicativos Android que funcio-nem em um grande número de dispositivos pode ser uma tarefa extremamentedesafiante. Avaliando por outro lado, a fragmentação apresenta vários benefícios,tanto para desenvolvedores quanto para usuários. A disponibilidade de dispositi-vos Android de baixo custo (que raramente rodam as versões atuais do Android)permite à tecnologia Android um nível de penetração nos mercados de massa

5Dados de 8 de janeiro de 2014. As informações sobre fragmentação das versões do Android sãoconstantemente atualizadas no site do Android [23].

6

Page 7: Artigo-Introdução Ao Android

muito superior à do IOS, tendo como consequência direta que os desenvolvedorespara Android tem um publico alvo maior. Para os consumidores, a fragmentaçãopossibilita que eles(as) tenham exatamente o dispositivo que procuram - pequenoou grande, barato ou caro, e com diferentes combinações de funcionalidades.

Figura 3: Variedade de tamanhos de tela no iOS [25].

Versão Codinome API Distribuição

2.2 Froyo 8 1.3%2.3.3-2.3.7

Gingerbread 10 21.2%

3.2 Honeycomb 13 0.1%4.0.3-4.0.4

Ice CreamSandwich

15 16.9%

4.1.x 16 35.9%4.2.x Jelly Bean 17 15.4%4.3 18 7.8%4.4 Kitkat 19 1.4%

Tabela 1: Fragmentação da plataforma Android, desconsiderando as versõesabaixo de 2.2.

7

Page 8: Artigo-Introdução Ao Android

7 O que há de novo no Kitkat?

Android Kitkat [14], apesar de ser a implementação mais avançada do momento,pode suportar dispositivos de baixa capacidade de memória (a partir de 512 MB).De forma geral, equipamentos com footprint limitado podem rodar bem o Kitkat,desde que os OEMs (em inglês, Original Equipment Manufacturer - em tradu-ção livre, fabricantes originais de dispositivos) sigam as especificações e reco-mendações do Google ao manufaturarem os equipamentos. A seguir são listadasalgumas características do Kikat que permitem um melhor aproveitamento dohardware do dispositivo.

• Dalvik JIT code cache tuning: o recurso de interpretação/compilação Dal-vik JIT (Just In Time compilation) permite à VM decidir qual código deveser constantemente interpretado e qual código deve ser convertido (com-pilado) uma única vez para código de máquina, minimizando o tempo deprocessador dedicado à interpretação de código.

• Kernel samepage merging (KSM) [27]: permite compartilhar páginas dememória idênticas entre diferentes processos ou usuários.

• Swap to zRAM6: Utilização eficiente de cache de memória dinâmica.

• Novas opções de configuração: controle de requisição de memória, definiçãode tamanho de cache para gráficos, otimização de alocação de memória paraprocessos entre outras.

Além das possibilidades de otimização do hardware proporcionadas pelo Kitkat,o próprio software melhora a utilização de memória limitando sua alocação pelosprocessos de núcleo, além de coibir a utilização indiscriminada de memória pelosprocessos de usuário (aplicações). Como resultado, as aplicações executam pron-tamente quando são chamadas e a transição entre elas ocorre com suavidade.

Reforçando a preocupação com desempenho do Kitkat, o Google criou APIsque permitem o gerenciamento de memória de acordo com o dispositivo, possibi-litando aos desenvolvedores criar aplicações flexíveis e que se ajustam à capaci-dade de hardware de cada dispositivo.

Outras novidades trazidas pelo Kitkat são:

• Nova plataforma NFC (do inglês, Near Field Communication - em traduçãolivre, comunicação por proximidade): O Android 4.4 apresenta uma novaplataforma para transações seguras baseadas em NFC através de HCE(em inglês, Host Card Emulation). Com o recurso HCE, qualquer aplica-ção em um aparelho Android pode emular um smart card NFC, permitindoao usuário iniciar uma transação simplesmente escolhendo uma aplicaçãode seu interesse (nenhum dispositivo de segurança adicional é necessário).Também é possível fazer o oposto, ou seja, utilizar o novo recurso Reader

6A zRAM (Zero-capacitor memory) [26] é um tecnologia de memória RAM dinâmica que possibilitaacesso a dados com velocidade comparada à das memórias estáticas, mas ocupando um espaço muitomenor.

8

Page 9: Artigo-Introdução Ao Android

Mode para emular um leitor para cartões HCE e outras transações basea-das em NFC.

• Printing Framework: É possível imprimir qualquer tipo de conteúdo atra-vés de Wi-Fi ou cloud-hosted services (em tradução livre, serviços hospe-dados remotamente). Em aplicações que permitem impressão, os usuáriospodem localizar impressoras disponíveis, mudar o tamanho do papel, ouescolher páginas específicas para imprimir, além de poder imprimir prati-camente qualquer tipo de documento, imagem ou arquivo.

• Storage access framework: Torna possível aos usuários navegar e abrir do-cumentos, imagens e outros arquivos através de qualquer provedor de ar-mazenamento de conteúdo. Uma interface gráfica amigável permite que ousuário navegue pelos arquivos mais recentes em uma forma simples atra-vés de aplicações e provedores.

• Hardware sensor batching: O Android trabalha com o dispositivo de hard-ware para coletar e disponibilizar eventos de sensor de forma eficiente emlotes (batches), ao invés de coletar o evento individualmente no momentoem que ele é detectado. Com essa estratégia, o processador pode permane-cer livre (low-power idle state, ou seja, consumindo pouca energia) até queo próximo lote de eventos seja entregue. O programador pode requisitarlotes de eventos de qualquer sensor usando um observador de eventos pa-drão e, inclusive, controlar o intervalo de recebimento dos lotes de eventos.Também é possível requisitar a entrega imediata de lotes de eventos entreos intervalos preestabelecidos.

• Step Detector and Step Counter: O Kitkat adicionou suporte a dois novossensores - detecção de passos e contagem de passos - permitindo que umaaplicação monitora os passos do usuário quando ele(a) está andando, cor-rendo ou subindo/descendo escadas. Estes sensores estão implementadosem hardware para minimizar o consumo de energia. O detector de passosanalisa a entrada do acelerômetro para detectar quando o usuário dá umpasso, disparando um evento para cada passo dado. O contador de passostotaliza o número de passos dados desde o último reboot do dispositivo edispara um evento sempre que a quantidade de passos é alterada. O geren-ciamento do sensor está construído internamente no hardware, portanto oprogramador não precisa se preocupar em manter ou escrever os algorit-mos de detecção dentro da aplicação. Por enquanto estes recursos só estãodisponíveis no Nexus 5.

• SMS provider: Padroniza o acesso às mensagens armazenadas em um dis-positivo, tornando uniforme a maneira como as mensagens SMS ou MMS(em inglês, multimedia message service) são armazenadas ou recuperadas.Além do SMS provider e novas APIs, o Kitkat introduz uma nova semân-tica para receber (SMS_RECEIVED) e escrever (SMS_DELIVER) mensagensno provedor. Isso é feito através do recurso "intent", que será apresentadono próximo capítulo. Outra novidade é que o sistema permite que apenas

9

Page 10: Artigo-Introdução Ao Android

a aplicação default escreva mensagens, mas que qualquer outra aplicaçãopossa receber mensagens a qualquer momento. Aplicações que não são de-fault do usuário também podem enviar mensagens. Neste caso, o sistematrata essas mensagens escrevendo-as para o provedor em nome do aplica-tivo, de modo que os usuários podem vê-las no aplicativo default.

• Full-screen Immersive mode: No modo imersivo em tela cheia, Figura 4, aaplicação utiliza todos os pixels da tela para mostrar conteúdo e capturareventos de toque. O novo modo imersivo em tela cheia introduzido no An-droid 4.4 permite a criação de telas totalmente cheias (de canto a canto)para telefones e tablets, ocultando todos os comandos gráficos padrão dosistema status bar e navigation bar).

Figura 4: No modo imersivo, a tela fica completamente tomada pela aplicação eos botões virtuais são omitidos.[14].

• Translucent system UI styling: Agora é possível fazer com que novos estilosde janelas e temas use o recurso de UI translúcido (Figura 5), tanto parabarra de status como para barra de navegação. Um caso típico de utilizaçãode barra translúcida é a aplicação Google Now.

• Novo sistema de notificações: Agora o serviços que consomem notificações(notification listeners) têm acesso a mais informações das notificações (cons-truídas utilizando-se APIs de criação de notificação) que chegam ao sis-

10

Page 11: Artigo-Introdução Ao Android

Figura 5: Exemplo de barra de sistema translúcida.[14].

tema. Os listeners podem acessar as ações da notificação, além de camposextras, tais como: texto, ícones, figuras, progresso, cronometro e etc.

• Chromium7 WebView: O Android 4.4 inclui uma implementação completa-mente nova de WebView baseada em Chromium, oferecendo ao usuário omelhor em suporte a padrões, desempenho e compatibilidade para criar eexibir conteúdo baseado em web.

Falando de forma mais técnica, o Chromium WebView disponibiliza amplosuporte para HTML5, CSS3 e JavaScript. Além de suportar a grande mai-oria das características do Chrome for Android 30, ele também trás umaversão atualizada da JavaScript Engine (V8), que resulta em um desem-penho superior na interpretação de código JavaScript. Como um bônus, onovo Chromium WebView suporta depuração de código remota usando Ch-rome DevTools, ou seja, é possível usar as ferramentas do Chrome DevToolsna sua máquina de desenvolvimento para inspecionar, depurar e analisaro conteúdo da sua WebView "ao vivo"no dispositivo móvel.

Referências

[1] Open Source Initiative. The Open Source Initiative, dez 2013. Disponívelem:<http://source.android.com/source/licenses.html>. Acessado em: 7Dez 2013.

[2] Stallman, R. The Guardian: Is Android really free software?, set 2011.Disponível em:<http://www.theguardian.com/technology/2011/sep/19/android-free-software-stallman>. Acessado em: 9 Dez 2013.

7Chromium é um projeto [28] de browser open source que tem como meta construir o navegadrothatmais rápido, seguro e estável para todos os usuários da Internet.

Page 12: Artigo-Introdução Ao Android

[3] The Apache Software Foundation. Apache License, Version 2.0, jan 2004.Disponível em:<http://www.apache.org/licenses/LICENSE-2.0>. Acessado em: 7 Dez2013.

[4] Torvalds, L., GNU GENERAL PUBLIC LICENSE, Version 2, jun 1991. Dis-ponível em:<https://www.kernel.org/pub/linux/kernel/COPYING>. Acessado em:7 Dez 2013.

[5] Open Handset Alliance. Open Handset Alliance, dez de 2013. Disponível em:<http://www.openhandsetalliance.com/press_releases.html>. Aces-sado em: 7 Dez 2013.

[6] Android. Source. Downloading and Building, jan de 2014. Disponível em:<http://source.android.com/source/building.html>. Acessado em:13 Jan 2014.

[7] Página Oficial do Android. Android, dez de 2013. Disponível em:<http://www.android.com/>. Acessado em: 7 Dez 2013.

[8] BloombergBusinessweek. Google Buys Android for Its Mobile Arsenal, agode 2005. Disponível em:<http://www.businessweek.com/stories/2005-08-16/google-buys-android-for-its-\mobile-arsenal>. Acessado em: 7Dez 2013.

[9] Wikipedia. Android, dez de 2013. Disponível em:<http://pt.wikipedia.org/wiki/Android>. Acessado em: 7 Dez 2013.

[10] Wikipédia. Ficheiro:Android-System-Architecture.svg, jun de 2012. Dispo-nível em:<http://pt.wikipedia.org/wiki/Ficheiro:Android-System-Architecture.svg>. Acessado em: 11 Jan 2014.

[11] Android. Source. Building kernels, jan de 2014. Disponível em:<http://source.android.com/source/building-kernels.html>. Aces-sado em: 13 Jan 2014.

[12] Supporting Multiple Screens. Developers. Android, dez de 2013. Disponívelem:<http://developer.android.com/guide/practices/screens_support.html>. Acessado em: 9 Dez 2013.

[13] Terms and Concepts. Developers. Android, dez de 2013. Disponível em:<http://developer.android.com/guide/practices/screens_support.html#terms>. Acessado em: 9 Dez 2013.

12

Page 13: Artigo-Introdução Ao Android

[14] Android Kitkat. Developers. Android, dez de 2013. Disponível em:<http://developer.android.com/about/versions/kitkat.html>.Acessado em: 10 Dez 2013.

[15] Saving Data in SQL Databases. Developers. Android, dez de 2013. Disponí-vel em:<http://developer.android.com/training/basics/data-storage/\databases.html>. Acessado em: 10 Dez 2013.

[16] Data Storage. Developers. Android, dez de 2013. Disponível em:<http://developer.android.com/guide/topics/data/data-storage.html>. Acessado em: 10 Dez 2013.

[17] Web Apps. Developers. Android, dez de 2013. Disponível em:<http://developer.android.com/guide/webapps/index.html>. Aces-sado em: 10 Dez 2013.

[18] Reference. Developers. Android, dez de 2013. Disponível em:<http://developer.android.com/reference/android/telephony/package\-summary.html>. Acessado em: 10 Dez 2013.

[19] Dalvik Technical Information. Developers. Android, dez de 2013. Disponívelem:<http://source.android.com/devices/tech/dalvik/index.html>.Acessado em: 10 Dez 2013.

[20] Introducing ART. Developers. Android, dez de 2013. Disponível em:<http://source.android.com/devices/tech/dalvik/art.html>. Aces-sado em: 10 Dez 2013.

[21] Media Playback. API Guides. Android, dez de 2013. Disponível em:<http://developer.android.com/guide/topics/media/mediaplayer.html>. Acessado em: 10 Dez 2013.

[22] Exploiting the SDK. Tools. Android, dez de 2013. Disponível em:<http://developer.android.com/sdk/exploring.html>. Acessado em:10 Dez 2013.

[23] Dashboards. Developers. Android, dez de 2013. Disponível em:<http://developer.android.com/about/dashboards/index.html>.Acessado em: 11 Dez 2013.

[24] What is API Level?. Developers. Android, dez de 2013. Disponível em:<http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels>. Acessado em: 11 Dez 2013.

[25] Android Fragmentation Visualized. OpenSignal. , jul de 2013. Disponívelem:<http://opensignal.com/reports/fragmentation-2013/>. Acessadoem: 15 Jan 2014.

13

Page 14: Artigo-Introdução Ao Android

[26] Android Fragmentation Visualized. OpenSignal. , mar de 2006. Disponívelem:<http://www.digitimes.com/bits_chips/a20060328PR202.html>.Acessado em: 17 Jan 2014.

[27] Linux 2.6.32. , jan de 2013. Disponível em:<http://kernelnewbies.org/Linux_2_6_32>. Acessado em: 17 Jan 2014.

[28] The Chromium Project, abr 2013. Disponível em:<http://www.chromium.org/Home>. Acessado em: Abr 2014.

14