Arquitetura do Google Android

Posted: November 15, 2009 in Android

Antes de criarmos os primeiros programas para Android, vamos entender o que ele é, e como é a sua arquitetura.

1. O que é o Android?

O Android é uma pilha de software para dispositivos móveis, que inclui um sistema operacional, middleware e aplicações chave. O Android SDK fornece as ferramentas e APIs necessárias para começar a desenvolver aplicações na plataforma Android usando a linguagem de programação Java.

2. Características

– Application framework: Permite a reutilização e substituição de componentes;
– Dalvik virtual machine: Otimizado para dispositivos móveis;
– Integrated browser: Baseado sobre o open source Webkit engine;
– Optimized graphics: Alimentado por uma personalizada biblioteca gráfica 2D; gráficos 3D baseado sobre a especificação OpenGL ES 1.0 (aceleração de hardware opcional);
– SQLite: Armazenamento de dados estruturados;
– Média suporte: comum para áudio, vídeo e ainda os formatos de imagens (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF);
– Telefonia GSM: Dependente de hardware;
– Bluetooth, EDGE, 3G, and WiFi: Dependente de hardware;
– Camera, GPS, compass, and accelerometer: Dependente de hardware;
– Rico ambiente de desenvolvimento: Inclui um dispositivo emulador, ferramentas de depuração, memória e perfis de desempenho, e um plugin para o IDE Eclipse (acesse o artigo “Instalando o ambiente de desenvolvimento do Android no Ubuntu” para maiores detalhes sobre como instalar).

3. Arquitetura

O diagrama a seguir mostra os principais componentes do sistema operacional Android.

andoid_system-architecture

4. Aplicações

Android é fornecido com um conjunto de aplicações, incluindo um cliente de e-mail, SMS, calendário, mapas, navegador, contatos e outros. Todas as aplicações são escritos utilizando a linguagem de programação Java.

5. Framework de Aplicações

Os desenvolvedores têm pleno acesso às APIs do mesmo framework usado pelos aplicativos essenciais. A arquitetura do aplicativo é projetado para simplificar a reutilização de componentes; qualquer aplicativo pode publicar as suas capacidades e qualquer outra aplicação pode então fazer uso dessas capacidades (sujeito a restrições de segurança impostas pelo framework). Este mesmo mecanismo permite que os componentes sejam substituído pelo usuário.

Subjacente a todas as aplicações é um conjunto de serviços e sistemas, incluindo:

– Um conjunto rico e extensível de Views que pode ser usado para criar um aplicativo, incluindo listas, grids, caixas de texto, botões e até mesmo um navegador web embutido;
Content Provider que permite que os aplicativos acessem dados de outros aplicativos (como Contatos), ou compartilhar os seus próprios dados;
– Um Resource Manager, fornecendo acesso a recursos não-código, como strings localizadas, gráficos e layout;
– Um Notification Manager que permite que todos os aplicações mostrem alertas personalizados na barra de status;
– Um Activity Manager que gerencia o ciclo de vida de aplicações e fornece uma navegação comum backstack.

6. Bibliotecas

Android inclui um conjunto de bibliotecas C/C ++ usadas por diversos componentes do sistema Android. Estas capacidades são expostas para os desenvolvedores através do framework de aplicação do Android. Algumas das principais bibliotecas estão listados abaixo:

– System C library: um BSD derivado da implementação do sistema de biblioteca padrão C (libc), sintonizado para dispositivos embarcados baseados em Linux;
– Media Libraries: baseado no OpenCORE PacketVideo; as bibliotecas suportam reprodução e gravação de áudio e muitos populares formatos de vídeo, bem como arquivos de imagem estática, incluindo MPEG4, H.264, MP3, AAC, AMR, JPG e PNG;
– Surface Manager: gerencia o acesso ao subsistema de exibição e sem problemas compósitos 2D e 3D camadas gráfico de múltiplas aplicações;
– LibWebCore: um engine de navegador moderno que alimenta tanto o navegador do Android e uma visão de web embutido;
– SGL: engine de gráficos 2D subjacentes;
– Bibliotecas 3D: uma aplicação baseada em OpenGL ES 1.0 APIs; as bibliotecas usam tanto aceleração de hardware 3D (quando disponível) ou o incluído, software 3D rasterizer altamente otimizado;
– FreeType: renderização de fonte bitmap e vector;
– SQLite: um engine de banco de dados relacional leve e poderoso disponível para todas as aplicações.

7. Android Runtime

Android inclui um conjunto de bibliotecas que fornece a maioria das funcionalidades disponíveis nas principais bibliotecas da linguagem de programação Java.

Toda aplicação Android roda em seu próprio processo, com a sua própria instância da máquina virtual Dalvik. Dalvik foi escrito de modo que um dispositivo possa executar várias VMs eficientemente. O Dalvik VM executa os arquivos em executáveis Dalvik (DEX). Formato que é otimizada para o mínimo de footprint de memória. A VM é baseada em registradores, e executa classes compiladas por um compilador de linguagem Java que foram transformadas para o formato .dex incluído pela ferramenta “dx”.

A VM Dalvik depende do kernel Linux para funcionalidades subjacentes como o encadeamento e baixo nível de gerenciamento de memória.

8. Linux Kernel

Android roda em Linux versão 2.6 para sistema de serviços essenciais como segurança, gerenciamento de memória, gerenciamento de processos, pilha de rede e modelo de driver. O kernel também atua como uma camada de abstração entre o hardware e o resto da pilha de software.

9. Sobre

Material extraído do site http://developer.android.com/index.html.

Próximo artigo sobre Android, começaremos a desenvolver softwares e a aprender mais sobre essa plataforma.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s