Você está na página 1de 5

2017611 Arquiteturadaplataforma|AndroidDevelopers

Android Developers

Arquitetura da plataforma

Neste documento

Kernel do Linux
Camada de abstrao de hardware (HAL)
Android Runtime
Bibliotecas C/C++ nativas
Estrutura da Java API
Aplicativos do sistema

O Android uma pilha de software com base em Linux de cdigo aberto criada para diversos
dispositivos e fatores de forma. O diagrama a seguir mostra a maioria dos componentes da plataforma
Android.

https://developer.android.com/guide/platform/index.html 1/6
2017611 Arquiteturadaplataforma|AndroidDevelopers

Figura 1. A pilha de software do Android.

Kernel do Linux
A fundao da plataforma Android o kernel do linux. Por exemplo: o Android Runtime (ART) (#art) cona no kernel do
Linux para cobrir funcionalidades como encadeamento e gerenciamento de memria de baixo nvel.

https://developer.android.com/guide/platform/index.html 2/6
2017611 Arquiteturadaplataforma|AndroidDevelopers

Usar um kernel do Linux permite que o Android aproveite os recursos de segurana principais
(https://source.android.com/security/overview/kernel-security.html) e que os fabricantes dos dispositivos desenvolvam drivers de
hardware para um kernel conhecido.

Camada de abstrao de hardware (HAL)


A camada de abstrao de hardware (HAL) (https://source.android.com/devices/index.html#Hardware%20Abstraction%20Layer)
fornece interfaces padro que expem as capacidades de hardware do dispositivo para a estrutura da Java API (#api-
framework) de maior nvel. A HAL consiste em mdulos de biblioteca, que implementam uma interface para um tipo
especco de componente de hardware, como o mdulo de cmera (https://source.android.com/devices/camera/index.html) ou
bluetooth (https://source.android.com/devices/bluetooth.html). Quando uma Framework API faz uma chamada para acessar o
hardware do dispositivo, o sistema Android carrega o mdulo da biblioteca para este componente de hardware.

Android Runtime
Para dispositivos com Android verso 5.0 (API nvel 21) ou mais recente, cada aplicativo executa o prprio processo
com uma instncia prpria do Android Runtime (ART) (http://source.android.com/devices/tech/dalvik/index.html). O ART
projetado para executar vrias mquinas virtuais em dispositivos de baixa memria executando arquivos DEX, um
formato de bytecode projetado especialmente para Android, otimizado para oferecer consumo mnimo de memria.
Construa cadeias de ferramentas, como Jack (https://source.android.com/source/jack.html), e compile fontes Java em
bytecodes DEX, que podem ser executadas na plataforma Android.

Alguns dos recursos principais de ART so:

Compilao "ahead-of-time" (AOT) e "just-in-time" (JIT)

Coleta de lixo (GC) otimizada

Melhor compatibilidade de depurao, inclusive um gerador de perl de exemplo, excees de diagnstico


detalhadas e gerao de relatrios de erros, alm da capacidade de denir pontos de controle para monitorar
campos especcos

Antes do Android verso 5.0 (API nvel 21), o Dalvik era o tempo de execuo do Android. Se o seu aplicativo executa o
ART bem, deve funcionar no Dalvik tambm, mas talvez no vice-versa (https://developer.android.com/guide/platform/verifying-
apps-art.html).

O Android tambm contm um conjunto das principais bibliotecas de tempo de execuo que fornecem a maioria da
funcionalidade da linguagem de programao Java, inclusive alguns recursos de linguagem Java 8
(https://developer.android.com/guide/platform/j8-jack.html) que a estrutura da Java API usa.

https://developer.android.com/guide/platform/index.html 3/6
2017611 Arquiteturadaplataforma|AndroidDevelopers

Bibliotecas C/C++ nativas


Vrios componentes e servios principais do sistema Android, como ART e HAL, so implementados por cdigo nativo
que exige bibliotecas nativas programadas em C e C++. A plataforma Android fornece as Java Framework APIs para
expor a funcionalidade de algumas dessas bibliotecas nativas aos aplicativos. Por exemplo, possvel acessar
OpenGL ES (https://developer.android.com/guide/topics/graphics/opengl.html) pela Java OpenGL API
(https://developer.android.com/reference/android/opengl/package-summary.html) da estrutura do Android para adicionar a
capacidade de desenhar e manipular grcos 2D e 3D no seu aplicativo.

Se estiver desenvolvendo um aplicativo que exige cdigo C ou C++, voc pode usar o Android NDK
(https://developer.android.com/ndk/index.html) para acessar algumas dessas bibliotecas de plataforma nativa
(https://developer.android.com/ndk/guides/stable_apis.html) diretamente do seu cdigo nativo.

Estrutura da Java API


O conjunto completo de recursos do SO Android est disponvel pelas APIs programadas na linguagem Java. Essas
APIs formam os blocos de programao que voc precisa para criar os aplicativos Android simplicando a reutilizao
de componentes e servios de sistema modulares e principais, inclusive:

Um sistema de visualizao (https://developer.android.com/guide/topics/ui/overview.html) rico e extensivo til para programar


a IU de um aplicativo, com listas, grades, caixas de texto, botes e at mesmo um navegador da web incorporado

Um gerenciador de recursos (https://developer.android.com/guide/topics/resources/overview.html), fornecendo acesso a


recursos sem cdigo como strings localizadas, grcos e arquivos de layout

Um gerenciador de noticao (https://developer.android.com/guide/topics/ui/notiers/notications.html) que permite que todos


os aplicativos exibam alertas personalizados na barra de status

Um gerenciador de atividade (https://developer.android.com/guide/components/activities.html) que gerencia o ciclo de vida dos


aplicativos e fornece uma pilha de navegao inversa (https://developer.android.com/guide/components/tasks-and-back-
stack.html)

Provedores de contedo (https://developer.android.com/guide/topics/providers/content-providers.html) que permite que


aplicativos acessem dados de outros aplicativos, como o aplicativo Contatos, ou compartilhem os prprios dados

Os desenvolvedores tm acesso completo s mesmas Framework APIs (https://developer.android.com/reference/packages.html)


que os aplicativos do sistema Android usam.

https://developer.android.com/guide/platform/index.html 4/6
2017611 Arquiteturadaplataforma|AndroidDevelopers

Aplicativos do sistema
O Android vem com um conjunto de aplicativos principais para e-mail, envio de SMS, calendrios, navegador de
internet, contatos etc. Os aplicativos inclusos na plataforma no tm status especial entre os aplicativos que o usurio
opta por instalar. Portanto, um aplicativo terceirizado pode se tornar o navegador da Web, o aplicativo de envio de SMS
ou at mesmo o teclado padro do usurio (existem algumas excees, como o aplicativo Conguraes do sistema).

Os aplicativos do sistema funcionam como aplicativos para os usurios e fornecem capacidades principais que os
desenvolvedores podem acessar pelos prprios aplicativos. Por exemplo: se o seu aplicativo quiser enviar uma
mensagem SMS, no necessrio programar essa funcionalidade possvel invocar o aplicativo de SMS que j est
instalado para enviar uma mensagem ao destinatrio que voc especicar.

https://developer.android.com/guide/platform/index.html 5/6