Introdução ao Android

Android

É muito importante que os futuros desenvolvedores de Android saibam como funciona a plataforma em si. Este é o primeiro de muitos posts que devem surgir detalhando a plataforma, o SDK oficial, suas bibliotecas, etc com base na documentação oficial disponível em http://developer.android.com.

O que é o Android?

Android é um conjunto de softwares para dispositivos móveis que incluem um sistema operacional, middleware e aplicações-chave. O Android SDK provê as ferramentas e API necessárias para iniciar no desenvolvimento de aplicações na plataforma Android usando a linguagem de programação Java.

Características

  • Framework de aplicação que possibilita o reuso e troca de componentes.
  • Máquina virtual Dalvik otimizada para dispositivos móveis.
  • Navegador integrado baseado na engine open-source WebKit.
  • Gráficos otimizados fornecidos por uma biblioteca gráfica personalizada para 2D; biblioteca gráfica 3D baseada na especificação OpenGL ES 1.0 (com aceleração de hardware opcional).
  • SQLite para armazenamento de dados estruturado.
  • Suporte à mídia de áudios, vídeos e formatos de imagens comuns (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)
  • Telefonia GSM (dependente de hardware)
  • Bluetooth, EDGE, 3G, e WiFi (dependente de hardware)
  • Câmera, GPS, compasso, e acelerômetro (dependente de hardware)
  • Ambiente de desenvolvimento rico incluindo um emulador de dispositivos, ferramentas para depuração, profiling de memória e performance e um plugin para a IDE Eclipse.

Arquitetura Android

O diagrama seguinte mostra os componentes principais do sistema operacional Android. Cada seção é descrita com mais detalhes abaixo.

Aplicações

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

Framework de Aplicação

Provendo uma plataforma de desenvolvimento aberta, Android oferece aos desenvolvedores a habilidade de construir aplicações extremamente ricas e inovadoras. Desenvolvedores estão livres para tirar vantagem do hardware do dispositivo, acessar informações locais, rodar serviços em background, definir alarmes, adicionar notificações na barra de status, e muito, muito mais.

Desenvolvedores tem acesso total às mesmas APIs do framework usadas pelas aplicações centrais. A arquitetura de aplicação é desenvolvida para simplificar o reuso de componentes; qualquer aplicação pode publicar suas capacidades e qualquer outra aplicação pode então fazer uso destas capacidades (sujeito à restrições de segurança reforçadas pelo framework). Este mesmo mecanismo permite componentes serem trocados pelo usuário.

Subjacente à todas as aplicações está um conjunto de serviços e sistemas, incluindo:

  • Um grupo rico e extensível de Views que podem ser usadas para construir aplicações, incluindo listas, grids, caixas de texto, botões e mesmo um navegador web embutido.
  • Content Providers que permitem às aplicações acessarem dados de outras aplicações (como Contatos), ou para compartilhar seus próprios dados.
  • Um Resource Manager, provendo acesso a recursos que não são código como strings localizadas, gráficos e arquivos de layout.
  • Um Notification Manager que permite a todas as aplicações mostrarem alertas personalizados na barra de status.
  • Um Activity Manager que gerencia o ciclo de vida de aplicações e provê uma forma comum de navegação “backstack” (em pilha).

Para mais detalhes e um passo-a-passo de uma aplicação, leia este ebook.

Curso React Native

Bibliotecas

Android inclui um conjunto de bibliotecas C/C++ usada por vários componentes no sistema Android. Estas capacidades são expostas para desenvolver através do framework de aplicação Android. Algumas das bibliotecas centrais são listadas abaixo:

  • Biblioteca C do sistema – uma implementação derivada do BSD da biblioteca padrão de sistema C (libc), aperfeiçoada para dispositivos móveis baseados em Linux.
  • Bibliotecas de mídia – baseada no PacketVideo’s OpenCORE; as bibliotecas suportam playback e gravação de muitos formatos populares de áudio e vídeo, bem como arquivos de imagem estáticos, incluindo MPEG4, H.264, MP3, AAC, AMR, JPG, e PNG.
  • Gerenciador de superfície – gerencia acesso ao subsistema de exibição e camadas gráficas 2D e 3D para múltiplas aplicações.
  • LibWebCore – uma engine de navegador web moderna que fornece tanto o navegador do Android quanto uma visualização web embutida.
  • SGL – a engine de gráficos 2D subjacente.
  • Bibliotecas 3D – uma implementação baseada nas APIs OpenGL ES 1.0; as bibliotecas usam aceleração de hardware 3D (quando disponível) ou a a rasterização 3D via software.
  • FreeType – renderização de fontes bitmap e vetoriais.
  • SQLite – uma poderosa e leve engine de base de dados relacional disponível à todas aplicações.

Interpretador Android

Android inclui um conjunto de bibliotecas que provêem a maioria das funcionalidades disponíveis nas bibliotecas principais da linguagem de progamação Java.

Cada aplicação Android roda em seu próprio processo, com sua própria instância da máquina virtual Dalvik. Dalvik foi reescrito para que um dispositivo possa rodar múltiplas VMs eficientemente. A VM Dalvik executa arquivos no formato Executável Dalvik (.dex) que é otimizado para o mínimo consumo de memória. A VM é baseada em registradores, e roda classes compiladas pelo compilador da linguagem Java que foi transformado para o formato .dex pela ferramenta incluída “dx”.

A VM Dalvik confia no kernel do Linux para tratar de funcionalidades como threading e gerenciamento de memória de baixo nível.

Kernel do Linux

Android confia no kernel do Linux (versão 2.6) para gerenciar os serviços de sistemas centrais como segurança, gerenciamento de memória, gerenciamento de processos, pilha de rede, e modelo de drivers. O kernel também age como uma camada de abstração entre o hardware e o resto da pilha de software.

Agora que pegou a teoria, que tal algo mais prático?

* OBS: curtiu o post? Então dá uma olhada no meu livro de Android clicando no banner abaixo pra aprender a criar outros tantos apps incríveis!

Criando apps para empresas com Android

Publicado por

Luiz Duarte

Pós-graduado em computação, professor, empreendedor, autor, Agile Coach e programador nas horas vagas.