A partir de 27 de março de 2025, recomendamos usar android-latest-release em vez de aosp-main para criar e contribuir com o AOSP. Para mais informações, consulte Mudanças no AOSP.
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Esta página descreve o layout do diretório para dispositivos com o Android 8.0 e
versões mais recentes, regras do VNDK e a política de segurança associada.
Layout do 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 exclusivas do framework (incluindo
LL-NDK-Private e algumas bibliotecas com os mesmos nomes que as
do VNDK-SP).
/system/lib[64]/vndk-sp contém bibliotecas do VNDK-SP para
HALs do mesmo processo.
/vendor/lib[64] contém as bibliotecas do VNDK estendidas pelo fornecedor (bibliotecas DXUA ou DXUX do VNDK), implementações HAL do mesmo processo e outras bibliotecas
compartilhadas do fornecedor.
/vendor/lib[64]/vndk-sp pode conter as bibliotecas do VNDK-SP estendidas pelo
fornecedor.
Os módulos do fornecedor carregam as bibliotecas do VNDK de /system/lib[64].
Regras do VNDK
Esta seção fornece uma lista abrangente de regras do VNDK:
Os processos do framework não podem carregar bibliotecas compartilhadas que não são do SP-HAL de partições
do fornecedor (estritamente aplicado a partir do Android 8.1).
Os processos do fornecedor não podem carregar bibliotecas que não sejam LL-NDK,
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 do VNDK instaladas precisam ser um subconjunto de bibliotecas do VNDK
qualificadas definidas pelo Google.
As dependências externas de SP-HAL e SP-HAL-Dep precisam ser restritas a
LL-NDK ou bibliotecas VNDK-SP definidas pelo Google.
As dependências de uma biblioteca compartilhada SP-HAL precisam ser restritas a bibliotecas LL-NDK,
bibliotecas VNDK-SP definidas pelo Google, outras bibliotecas SP-HAL e/ou
outras bibliotecas compartilhadas do fornecedor que podem ser marcadas como bibliotecas
SP-HAL-Dep.
Uma biblioteca compartilhada do fornecedor só pode ser marcada como uma biblioteca SP-HAL-Dep se ela
não for uma biblioteca do AOSP e as dependências dela forem restritas a bibliotecas LL-NDK,
bibliotecas VNDK-SP definidas pelo Google, bibliotecas SP-HAL e/ou outras bibliotecas
SP-HAL-Dep.
O VNDK-SP precisa ser independente. O libRS_internal.so recebe um tratamento
especial no Android 8.0, mas será revisto em uma versão futura.
Nenhuma comunicação de framework-vendor por interfaces não-HIDL, incluindo
(mas não se limitando a) binder, soquetes, memórias compartilhadas, arquivos etc.
O tamanho da partição do sistema precisa ser grande o suficiente para conter duas cópias
de todas as bibliotecas qualificadas do VNDK e uma cópia das bibliotecas compartilhadas
de framework não qualificadas.
sepolicy
Os processos do framework descritos nesta seção correspondem a
coredomain em sepolicies, enquanto os processos do fornecedor correspondem a
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 em 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 em coredomain
Acessível de domínio não principal
LL-NDK
Sistema
Y
Y
LL-NDK-Private
Sistema
Y
Y
VNDK-SP/VNDK-SP-Private
Sistema
Y
Y
VNDK-SP-Ext
Fornecedor
Y
Y
VNDK
Sistema
Y
Y
VNDK-Ext
Fornecedor
N
Y
FWK-ONLY
Sistema
Y
N
FWK-ONLY-RS
Sistema
Y
N
SP-HAL
Fornecedor
Y
Y
SP-HAL-Dep
Fornecedor
Y
Y
VND-ONLY
Fornecedor
N
Y
LL-NDK-Private e VNDK-SP-Private precisam ser
acessíveis em ambos os domínios, porque o coredomain não
acessados indiretamente. Da mesma forma, o SP-HAL-Dep precisa ser acessível em
coredomain porque o SP-HAL depende dele.
rótulo same_process_hal_file
As bibliotecas a seguir existem na partição do fornecedor. Faça com que essas bibliotecas sejam acessíveis em
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
Identifique explicitamente esses arquivos como same_process_hal_file, porque tudo
na partição vendor não é acessível para coredomain por padrão. Adicione linhas semelhantes a
esta ao arquivo file_contexts específico do fornecedor.
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-07-27 UTC."],[],[],null,["# Directories, rules, and sepolicy\n\nThis page describes the directory layout for devices running Android 8.0 and\nhigher, VNDK rules, and associated sepolicy.\n\nDirectory layout\n----------------\n\nThe *Degenerated Directory Layout* consists of the following\ndirectories:\n\n- `/system/lib[64]` contains all framework shared libraries, including LL-NDK, VNDK, and framework-only libraries (including LL-NDK-Private and some libraries with the same names as the ones in VNDK-SP).\n- `/system/lib[64]/vndk-sp` contains VNDK-SP libraries for same-process HALs.\n- `/vendor/lib[64]` contains the VNDK libraries extended by the vendor (either DXUA or DXUX VNDK libraries), same-process HAL implementations, and other vendor shared libraries.\n- `/vendor/lib[64]/vndk-sp` may contain the VNDK-SP libraries extended by the vendor.\n\nVendor modules load the VNDK libraries from `/system/lib[64]`.\n\nVNDK rules\n----------\n\nThis section provides a comprehensive list of VNDK rules:\n\n- Framework processes must not load non-SP-HAL shared libraries from vendor partitions (strictly enforced starting from Android 8.1).\n- Vendor processes must not load non-LL-NDK, non-VNDK-SP, and non-VNDK libraries from the system partition. (not strictly enforced in Android O but will be in a future release).\n| **Note**: To benefit from the framework-only OTA beyond Android 8.0, this rule must not be violated in devices launched with Android 8.0.\n- Installed VNDK libraries must be a subset of Google-defined eligible VNDK libraries.\n- The outer dependencies of SP-HAL and SP-HAL-Dep must be restricted to LL-NDK or Google-defined VNDK-SP libraries.\n - The dependencies of an SP-HAL shared library must be restricted to LL-NDK libraries, Google-defined VNDK-SP libraries, other SP-HAL libraries, and/or other vendor shared libraries that can be labeled as SP-HAL-Dep libraries.\n - A vendor shared library can be labeled as a SP-HAL-Dep library only if it is not an AOSP library and its dependencies are restricted to LL-NDK libraries, Google-defined VNDK-SP libraries, SP-HAL libraries, and/or other SP-HAL-Dep libraries.\n- VNDK-SP must be self-contained. `libRS_internal.so` gets special treatment in Android 8.0, but will be revisited in a future release.\n- No framework-vendor communication through non-HIDL interfaces, including (but not limited to) binder, sockets, shared memories, files, etc.\n- The size of the system partition must be large enough to contain two copies of all eligible VNDK libraries and a copy of ineligible framework shared libraries.\n\nsepolicy\n--------\n\nFramework processes described in this section correspond to\n`coredomain` in sepolicies while vendor processes correspond to\n`non-coredomain`. For example, `/dev/binder` can be\naccessed only in `coredomain` and `/dev/vndbinder` can be\naccessed only in non-`coredomain`.\n\nSimilar policies restrict the access to the shared libraries on system and\nvendor partitions. The following table shows the rights to access shared\nlibraries of different categories:\n\n| Category | Partition | Accessible from coredomain | Accessible from non-coredomain |\n|-------------------------|-----------|----------------------------|--------------------------------|\n| LL-NDK | System | Y | Y |\n| LL-NDK-Private | System | Y | Y |\n| VNDK-SP/VNDK-SP-Private | System | Y | Y |\n| VNDK-SP-Ext | Vendor | Y | Y |\n| VNDK | System | Y | Y |\n| VNDK-Ext | Vendor | N | Y |\n| FWK-ONLY | System | Y | N |\n| FWK-ONLY-RS | System | Y | N |\n| SP-HAL | Vendor | Y | Y |\n| SP-HAL-Dep | Vendor | Y | Y |\n| VND-ONLY | Vendor | N | Y |\n\nLL-NDK-Private and VNDK-SP-Private must be\naccessible from both domains because non-`coredomain` will\nindirectly access them. Similarly, SP-HAL-Dep must be accessible from\n`coredomain` because SP-HAL relies on it.\n\nsame_process_hal_file label\n---------------------------\n\nThe following libraries exist in the vendor partition. Make these libraries accessible from both\n`coredomain` and non-`coredomain`.\n\n- VNDK-SP-Ext in `/vendor/lib[64]/vndk-sp`\n- SP-HAL in `/vendor/lib[64]` or `/vendor/lib[64]/hw`\n- SP-HAL-Dep in `/vendor/lib[64]` or `/vendor/lib[64]/hw`\n\nExplicitly label these files as `same_process_hal_file`, because anything\nin `vendor` partition is by default not accessible to `coredomain`. Add lines similar to\nthe following to the vendor-specific `file_contexts` file. \n\n```scdoc\n/vendor/lib(64)?/hw/libMySpHal\\.so u:object_r:same_process_hal_file:s0\n/vendor/lib(64)?/vndk-sp/libBase\\.so u:object_r:same_process_hal_file:s0\n/vendor/lib(64)?/libBaseInternal\\.so u:object_r:same_process_hal_file:s0\n```"]]