O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Diretórios, regras e sepolítica

Esta página descreve o layout do diretório para dispositivos que executam Android 8.0 e superior, regras VNDK e sepolicy associada.

Layout de diretório

O layout de diretório degenerado consiste nos seguintes diretórios:

  • /system/lib[64] contém todas as bibliotecas compartilhadas do framework, incluindo LL-NDK, VNDK e bibliotecas somente do framework (incluindo LL-NDK-Private e algumas bibliotecas com os mesmos nomes que os do VNDK-SP).
  • /system/lib[64]/vndk-sp contém bibliotecas VNDK-SP para HALs de mesmo processo.
  • /vendor/lib[64] contém as bibliotecas VNDK estendidas pelo fornecedor (bibliotecas DXUA ou DXUX VNDK), implementações HAL de mesmo processo e outras bibliotecas compartilhadas do fornecedor.
  • /vendor/lib[64]/vndk-sp pode conter as bibliotecas VNDK-SP estendidas pelo fornecedor.

Módulos de fornecedores carregam as bibliotecas VNDK de /system/lib[64] .

Regras VNDK

Esta seção fornece uma lista abrangente de regras VNDK:

  • Os processos de estrutura não devem carregar bibliotecas compartilhadas não SP-HAL de partições de fornecedores (estritamente aplicadas a partir do Android 8.1).
  • Os processos do fornecedor não devem carregar bibliotecas não-LL-NDK, não-VNDK-SP e não-VNDK da partição do sistema. (não é estritamente aplicado no Android O, mas será em uma versão futura).
  • As bibliotecas VNDK instaladas devem ser um subconjunto de bibliotecas VNDK qualificadas definidas pelo Google.
  • As dependências externas de SP-HAL e SP-HAL-Dep devem ser restritas a LL-NDK ou bibliotecas VNDK-SP definidas pelo Google.
    • As dependências de uma biblioteca compartilhada SP-HAL devem ser restritas a bibliotecas LL-NDK, bibliotecas VNDK-SP definidas pelo Google, outras bibliotecas SP-HAL e / ou outras bibliotecas compartilhadas de fornecedores que podem ser rotuladas como bibliotecas SP-HAL-Dep .
    • Uma biblioteca compartilhada do fornecedor pode ser rotulada como uma biblioteca SP-HAL-Dep apenas se não for uma biblioteca AOSP e suas dependências forem restritas a bibliotecas LL-NDK, bibliotecas VNDK-SP definidas pelo Google, bibliotecas SP-HAL e / ou outras bibliotecas SP-HAL-Dep.
  • VNDK-SP deve ser independente. libRS_internal.so recebe tratamento especial no Android 8.0, mas será revisitado em uma versão futura.
  • Nenhuma comunicação entre o fornecedor da estrutura por meio de interfaces não HIDL, incluindo (mas não se limitando a) fichário, soquetes, memórias compartilhadas, arquivos, etc.
  • O tamanho da partição do sistema deve ser grande o suficiente para conter duas cópias de todas as bibliotecas VNDK elegíveis e uma cópia de bibliotecas compartilhadas de estrutura inelegíveis.

sepolice

Os processos estruturais descritos nesta seção correspondem ao coredomain em sepolicies, enquanto os processos do fornecedor correspondem ao non-coredomain . Por exemplo, /dev/binder pode ser acessado apenas em coredomain e /dev/vndbinder pode ser acessado apenas em não- coredomain .

Políticas semelhantes restringem o acesso às bibliotecas compartilhadas nas partições do sistema e do fornecedor. A tabela a seguir mostra os direitos de acesso a bibliotecas compartilhadas de diferentes categorias:

Categoria Partição Acessível de
coredomínio
Acessível de
não é núcleo do domínio
LL-NDK Sistema Y Y
LL-NDK-Privado Sistema Y Y
VNDK-SP / VNDK-SP-Privado Sistema Y Y
VNDK-SP-Ext Fornecedor Y Y
VNDK Sistema Y Y
VNDK-Ext Fornecedor N Y
SOMENTE FWK Sistema Y N
FWK-ONLY-RS Sistema Y N
SP-HAL Fornecedor Y Y
SP-HAL-Dep Fornecedor Y Y
APENAS VND Fornecedor N Y

LL-NDK-Private e VNDK-SP-Private devem ser acessíveis de ambos os domínios porque não- coredomain os coredomain indiretamente. Da mesma forma, SP-HAL-Dep deve ser acessível a partir do coredomain porque SP-HAL depende dele.

rótulo same_process_hal_file

As seguintes bibliotecas existem na partição do fornecedor. Torne essas bibliotecas acessíveis de coredomain e não- coredomain .

  • VNDK-SP-Ext em /vendor/lib[64]/vndk-sp
  • SP-HAL em /vendor/lib[64] ou /vendor/lib[64]/hw
  • SP-HAL-Dep em /vendor/lib[64] ou /vendor/lib[64]/hw

Rotule explicitamente esses arquivos como same_process_hal_file , porque qualquer coisa na partição do vendor é, por padrão, não acessível ao coredomain . Adicione linhas semelhantes às seguintes para o arquivo file_contexts específico do fornecedor.

/vendor/lib(64)?/hw/libMySpHal\.so        u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/vndk-sp/libBase\.so      u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libBaseInternal\.so      u:object_r:same_process_hal_file:s0