Visão geral da arquitetura

O Android Open Source Project (AOSP) está disponível publicamente e é um código-fonte modificável do Android. Qualquer pessoa pode fazer o download e modificar o AOSP para o dispositivo. O AOSP fornece uma implementação completa e totalmente funcional da plataforma móvel Android.

Há dois níveis de compatibilidade para dispositivos que implementam o AOSP: compatibilidade com o AOSP e compatibilidade com o Android. Um dispositivo compatível com AOSP precisa estar em conformidade com a lista de requisitos do Documento de definição de compatibilidade (CDD). Um dispositivo compatível com o Android precisa estar em conformidade com a lista de requisitos do CDD e dos requisitos de software do fornecedor (VSR, na sigla em inglês) e testes como os do Conjunto de teste de fornecedor (VTS, na sigla em inglês) e Conjunto de teste de compatibilidade (CTS, na sigla em inglês). Para mais informações sobre a compatibilidade com o Android, consulte o Programa de compatibilidade do Android.

Arquitetura do AOSP

A pilha de software do AOSP contém as seguintes camadas:

Arquitetura de pilha de software do AOSP.

Figura 1. Arquitetura de pilha de software do AOSP.

Confira a seguir uma lista de definições dos termos usados na Figura 1:

App Android
Um app criado exclusivamente usando a API Android. A Google Play Store é amplamente usada para encontrar e fazer o download de apps Android, embora existam muitas outras alternativas. Em alguns casos, o fabricante de um dispositivo pode querer pré-instalar um app Android para oferecer suporte à funcionalidade principal do dispositivo. Se você tiver interesse em desenvolver apps Android, consulte developers.android.com.
App privilegiado
Um app criado usando uma combinação das APIs do Android e do sistema. Esses apps precisam ser pré-instalados como apps privilegiados em um dispositivo.
App do fabricante do dispositivo
Um app criado usando uma combinação da API do Android, da API do sistema e acesso direto à implementação do framework do Android. Como um fabricante de dispositivos pode acessar diretamente APIs instáveis no framework do Android, esses apps precisam ser pré-instalados no dispositivo e só podem ser atualizados quando o software do sistema do dispositivo é atualizado.
API System
A API System representa APIs do Android disponíveis apenas para parceiros e OEMs para inclusão em aplicativos agrupados. Essas APIs são marcadas como @SystemApi no código-fonte.
API do Android
A API Android é a API disponível publicamente para desenvolvedores de apps Android de terceiros. Para informações sobre a API do Android, consulte a Referência da API do Android.
Framework do Android
Um grupo de classes, interfaces e outros códigos pré-compilados do Java em que os apps são criados. Partes do framework são acessíveis publicamente pelo uso da API do Android. Outras partes do framework estão disponíveis apenas para OEMs usando as APIs do sistema. O código do framework do Android é executado dentro do processo de um app.
Serviços do sistema
Os serviços do sistema são componentes modulares e focados, como system_server, SurfaceFlinger e MediaService. A funcionalidade exposta pela API do framework do Android se comunica com os serviços do sistema para acessar o hardware.
Ambiente de execução do Android (ART)
Um ambiente de execução Java fornecido pelo AOSP. O ART realiza a tradução do bytecode do app em instruções específicas do processador que são executadas pelo ambiente de execução do dispositivo.
Camada de abstração de hardware (HAL)
Uma HAL é uma camada de abstração com uma interface padrão para fornecedores de hardware implementarem. As HALs permitem que o Android seja independente em relação a implementações de drivers de nível inferior. O uso de um HAL permite implementar funcionalidades sem afetar ou modificar o sistema de nível superior. Para mais informações, consulte a visão geral do HAL.
Daemons e bibliotecas nativos

Os demônios nativos nessa camada incluem init, healthd, logd e storaged. Esses demônios interagem diretamente com o kernel ou outras interfaces e não dependem de uma implementação de HAL baseada no espaço do usuário.

As bibliotecas nativas nessa camada incluem libc, liblog, libutils, libbinder e libselinux. Essas bibliotecas nativas interagem diretamente com o kernel ou outras interfaces e não dependem de uma implementação HAL baseada no espaço do usuário.

Kernel

O kernel é a parte central de qualquer sistema operacional e se comunica com o hardware subjacente de um dispositivo. Sempre que possível, o kernel do AOSP é dividido em módulos independentes de hardware e específicos do fornecedor. Para conferir uma descrição, incluindo definições, de componentes do kernel do AOSP, consulte a Visão geral do kernel.

Qual é a próxima etapa?

  • Se você é novo no AOSP e quer começar o desenvolvimento, consulte a seção "Começar".
  • Se você quiser saber mais sobre uma camada específica do AOSP, clique no nome da seção no painel de navegação à esquerda e comece com a visão geral dessa seção.