Arquitetura da plataforma

O Android é uma pilha de software com base em Linux de código aberto criada para diversos dispositivos e fatores de forma. A Figura 1 mostra os principais componentes da plataforma Android.

A pilha de software do Android

Figura 1. A pilha de software do Android.

Kernel do Linux

A fundação da plataforma Android é o kernel do linux. Por exemplo, o Android Runtime (ART, na sigla em inglês) confia no kernel do Linux para cobrir funcionalidades como encadeamento e gerenciamento de memória de baixo nível.

O uso de um kernel do Linux permite que o Android aproveite os recursos de segurança principais e que os fabricantes de dispositivos desenvolvam drivers de hardware para um kernel conhecido.

Camada de abstração de hardware (HAL)

A camada de abstração de hardware (HAL) fornece interfaces padrão que expõem as capacidades de hardware do dispositivo para a estrutura da API Java de maior nível. A HAL consiste em vários módulos de biblioteca, e cada um deles implementa uma interface para um tipo específico de componente de hardware, como o módulo de câmera ou Bluetooth. Quando uma API Framework faz uma chamada para acessar o hardware do dispositivo, o sistema Android carrega o módulo da biblioteca para esse componente de hardware.

Ambiente de execução do Android

Para dispositivos com Android versão 5.0 (API de nível 21) ou mais recente, cada app executa o próprio processo com uma instância própria do Android Runtime (ART). O ART foi criado para executar várias máquinas virtuais em dispositivos com pouca memória, executando arquivos no formato Dalvik Executable (DEX), um formato de bytecode projetado especificamente para o Android e otimizado para um consumo mínimo de memória. Ferramentas de build, como d8, compilam fontes Java no bytecode DEX, que pode ser executado na plataforma Android.

Alguns dos recursos principais de ART são:

  • Compilação "ahead-of-time" (AOT) e "just-in-time" (JIT)
  • Coleta de lixo (GC) otimizada
  • No Android 9 (nível 28 da API) e versões mais recentes, a conversão dos arquivos DEX de um pacote de apps em um código de máquina mais compacto
  • Melhor compatibilidade de depuração, incluindo um criador de perfil de amostragem, exceções de diagnóstico detalhadas e geração de relatórios de erros, além da capacidade de definir pontos de controle para monitorar campos específicos.

Antes do Android versão 5.0 (API de nível 21), o Dalvik era o tempo de execução do Android. Se o seu app for executado bem no ART, ele também poderá funcionar no Dalvik, mas talvez não seja o contrário.

O Android também contém um conjunto das principais bibliotecas de tempo de execução que fornecem a maioria das funcionalidades da linguagem de programação Java, incluindo alguns recursos de linguagem Java 8 que a estrutura da API Java usa.

Bibliotecas C/C++ nativas

Muitos serviços e componentes essenciais do sistema Android, como ART e HAL, são criados com base em código nativo que exige bibliotecas nativas escritas em C e C++. A plataforma Android fornece APIs de framework Java para expor a funcionalidade de algumas dessas bibliotecas nativas para apps. Por exemplo, é possível acessar OpenGL ES pela API Java OpenGL da estrutura do Android para adicionar a capacidade de desenhar e manipular gráficos 2D e 3D no seu app.

Se estiver desenvolvendo um app que exija código C ou C++, você pode usar o Android NDK para acessar algumas das bibliotecas de plataforma nativa diretamente do seu código nativo.

Framework da API Java

O conjunto completo de recursos do SO Android está disponível pelas APIs programadas na linguagem Java. Essas APIs formam os blocos de programação que você precisa para criar apps Android simplificando a reutilização de componentes e serviços de sistema modulares e principais, incluindo:

Os desenvolvedores têm acesso completo às mesmas APIs Framework que os apps do sistema Android usam.

Apps do sistema

O Android vem com um conjunto de apps principais para e-mail, envio de SMS, agenda, navegador de internet, contatos etc. Os apps inclusos na plataforma não têm status especial entre os apps que o usuário opta por instalar. Portanto, um app de terceiros pode se tornar o navegador da Web, o app de envio de SMS ou até mesmo o teclado padrão do usuário. Algumas exceções se aplicam, como o app Configurações do sistema.

Os apps do sistema funcionam como apps para os usuários e para fornecer recursos importantes que os desenvolvedores podem acessar no próprio app. Por exemplo, se você quer que seu app envie mensagens SMS, não é necessário criar essa funcionalidade por conta própria. Em vez disso, você pode invocar qualquer app de SMS instalado para entregar uma mensagem ao destinatário especificado.