Visão geral da arquitetura

A Android Open System Platform (AOSP) é um código-fonte Android disponível publicamente e modificável. Qualquer pessoa pode baixar e modificar o AOSP para seu dispositivo. AOSP fornece uma implementação completa e totalmente funcional da plataforma móvel Android.

Existem dois níveis de compatibilidade para dispositivos que implementam AOSP: compatibilidade AOSP e compatibilidade Android. Um dispositivo compatível com AOSP deve estar em conformidade com a lista de requisitos do Documento de Definição de Compatibilidade (CDD) . Um dispositivo compatível com Android deve estar em conformidade com a lista de requisitos do CDD e dos Requisitos de software do fornecedor (VSR) e testes como os do Vendor Test Suite (VTS) e do Compatibility Test Suite (CTS) . Para obter mais informações sobre a compatibilidade do Android, consulte o programa de compatibilidade do Android .

Arquitetura AOSP

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

Arquitetura de pilha de software AOSP.

Figura 1. Arquitetura de pilha de software AOSP.

A seguir está uma lista de definições para os termos usados ​​na Figura 1:

Aplicativo Android
Um aplicativo criado exclusivamente usando a API Android. A Google Play Store é amplamente usada para encontrar e baixar aplicativos Android, embora existam muitas outras alternativas. Em alguns casos, um fabricante de dispositivo pode querer pré-instalar um aplicativo Android para oferecer suporte à funcionalidade principal do dispositivo. Se você estiver interessado em desenvolver aplicativos Android, consulte developers.android.com
Aplicativo privilegiado
Um aplicativo criado usando uma combinação das APIs do Android e do sistema. Esses aplicativos devem ser pré-instalados como aplicativos privilegiados em um dispositivo.
Aplicativo do fabricante do dispositivo
Um aplicativo criado usando uma combinação da API Android, API do sistema e acesso direto à implementação da estrutura Android. Como um fabricante de dispositivo pode acessar diretamente APIs instáveis ​​dentro da estrutura do Android, esses aplicativos devem ser pré-instalados no dispositivo e podem ser atualizados somente quando o software do sistema do dispositivo for atualizado.
API do sistema
A API do sistema representa APIs 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 Android
A API Android é a API disponível publicamente para desenvolvedores de aplicativos Android terceirizados. Para obter informações sobre a API do Android, consulte Referência da API do Android .
Estrutura Android
Um grupo de classes Java, interfaces e outros códigos pré-compilados sobre os quais os aplicativos são criados. Partes da estrutura são acessíveis publicamente através do uso da API Android. Outras partes da estrutura estão disponíveis apenas para OEMs por meio do uso de APIs do sistema. O código da estrutura Android é executado dentro do processo de um aplicativo.
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 da estrutura Android se comunica com os serviços do sistema para acessar o hardware subjacente.
Tempo de execução do Android (ART)
Um ambiente de tempo de execução Java fornecido pela AOSP. O ART realiza a tradução do bytecode do aplicativo 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)
Um HAL é uma camada de abstração com uma interface padrão para implementação pelos fornecedores de hardware. HALs permitem que o Android seja agnóstico em relação às implementações de drivers de nível inferior. Usar um HAL permite implementar funcionalidades sem afetar ou modificar o sistema de nível superior. Para obter mais informações, consulte a visão geral do HAL .
Daemons e bibliotecas nativas

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

As bibliotecas nativas nesta 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.

Núcleo

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 AOSP é dividido em módulos independentes de hardware e módulos específicos do fornecedor. Para obter uma descrição, incluindo definições, dos componentes do kernel AOSP, consulte Visão geral do kernel .

Qual é o próximo?

  • Se você é novo no AOSP e deseja começar a desenvolver, consulte a seção Introdução .
  • Se você quiser saber mais sobre uma camada específica do AOSP, clique no nome da seção na navegação esquerda e comece com a visão geral dessa seção.