O Android Open Source Project (AOSP) é um código-fonte do Android disponível publicamente e modificável. Qualquer pessoa pode baixar e modificar o AOSP para o dispositivo. O AOSP oferece 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 de acordo com a lista de requisitos do Documento de definição de compatibilidade (CDD). Um dispositivo compatível com Android precisa obedecer à lista de requisitos no CDD e nos Requisitos de software do fornecedor (VSR, na sigla em inglês), além de testes como os do Conjunto de teste do fornecedor (VTS) e do Conjunto de teste de compatibilidade (CTS). Para mais informações sobre a compatibilidade com o Android, consulte o Programa de compatibilidade do Android.
Arquitetura do AOSP
A pilha de software para AOSP contém as seguintes camadas:
Figura 1. Arquitetura de pilha de software do AOSP.
Confira abaixo uma lista de definições dos termos usados na Figura 1:
- App Android
- Um app criado apenas usando a API Android. A Google Play Store é amplamente usada para encontrar e baixar apps Android, mas há muitas outras alternativas. Em alguns casos, um fabricante de dispositivos pode querer pré-instalar um app Android para oferecer suporte à funcionalidade principal do dispositivo. Se você quiser 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 Android, da API do sistema e do acesso direto à implementação do framework 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 do sistema
- 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 do 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 em Java em que os apps são criados. Algumas partes do framework são acessíveis publicamente pelo uso da API Android. Outras partes do framework estão disponíveis apenas para OEMs usando as APIs do sistema. O código do framework 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 Android se comunica com os serviços do sistema para acessar o hardware subjacente. - Android runtime (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 os fornecedores de hardware implementarem. As HALs permitem que o Android seja independente das implementações de driver de nível inferior. Usar uma 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 nativas
Os daemons nativos nessa camada incluem
init
,healthd
,logd
estoraged
. 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 nessa camada incluem
libc
,liblog
,libutils
,libbinder
elibselinux
. 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 de um dispositivo. Sempre que possível, o kernel do AOSP é dividido em módulos independentes de hardware e módulos específicos do fornecedor. Para uma descrição, incluindo definições, dos componentes do kernel do AOSP, consulte a Visão geral do kernel.
Quais são as próximas etapas?
- Se você não conhece o AOSP e quer começar a desenvolver, consulte a seção "Começar".
- Para 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 dela.