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

Partições ODM

Android 10 inclui suporte para a construção odm partições usando o sistema de compilação Android.

Sobre partições ODM

Os fabricantes de design original (ODMs) personalizam os pacotes de suporte de placa (BSPs) do fornecedor do sistema em chip (SoC) para seus dispositivos específicos (suas placas). Isso permite que eles implementem módulos de kernel para componentes específicos da placa, daemons específicos da placa ou seus próprios recursos em camadas de abstração de hardware (HALs). Eles também podem querer substituir ou personalizar os componentes SoC.

Em versões anteriores do Android, essas personalizações impediam o uso de uma única imagem de fornecedor para dispositivos com o mesmo SoC (ou com diferentes SoCs, mas da mesma família). Em Android 10 e superior, você pode usar um separado odm partição para personalizações, que permite que você use uma imagem de um único fornecedor para vários hardware SKUs.

Usando partições de produto e ODM

Android 9 adicionado suporte para a construção de product partições , permitindo o uso de uma única imagem de sistema para software múltiplos SKUs fornecidos por diferentes product.img imagens. Enquanto o product partição é destinado para software SKUs, o odm partição é destinado a hardware SKUs.

Com partições produtos e ODM dedicados, você pode usar o system partição para código genérico de acolhimento para a partilha entre muitos software SKUs, eo vendor de partição para código BSP-specific SoC anfitrião para compartilhar entre vários dispositivos com base no dado SoC.

O uso de partições separadas tem desvantagens, como a dificuldade de gerenciar o espaço em disco (por exemplo, você deve reservar uma quantidade limitada de espaço para crescimento futuro). No entanto, o Android 10 suporte para partições dinâmicas remove o problema de disco, e faz reparticionando um dispositivo durante uma over-the-air (OTA) atualização possível.

Componentes ODM

O odm partição contém os seguintes componentes específicos do ODM (semelhante ao vendor partição), listadas na tabela a seguir.

Componente específico do ODM Localização
Módulos de kernel carregáveis ​​(LKMs) /odm/lib/modules/*.ko
Bibliotecas nativas /odm/lib[64]
HALs /odm/lib[64]/hw
SEPolicy /odm/etc/selinux
Dados do objeto VINTF /odm/etc/vintf
init.rc arquivos /odm/etc/init
Propriedades do sistema /odm/build.prop
Sobreposições de recursos de tempo de execução (RROs) /odm/overlay/*.apk
Apps /odm/app/*.apk
Apps privados /odm/priv-app/*.apk
Bibliotecas Java /odm/framework/*.jar
Configurações do sistema do Android Framework /odm/etc/sysconfig/* e /odm/etc/permissions/*

Sem imagens personalizadas

Não use imagens personalizadas porque eles não têm suporte para o seguinte:

  • Instalação de um módulo para um destino específico. As imagens personalizadas oferecem suporte à cópia de artefatos em uma imagem, mas não podem instalar um módulo em uma partição específica, especificando a partição de destino como parte de uma regra de construção.
  • Soong. custom_images não pode ser construída usando o sistema de compilação Soong.
  • Atualização OTA. Imagens personalizadas são usadas como imagens ROM de fábrica que não podem ser editadas por OTA.

Manter ABIs entre partições

O odm partição é uma extensão do vendor de partição. Ao considerar a estabilidade da interface binária do aplicativo (ABI), tenha em mente a arquitetura a seguir.

Manter ABI entre partições
Figura 1. Mantendo ABI entre as partições
  • Não há estabilidade ABI entre odm e vendor partições. Ambas as partições devem ser atualizadas ao mesmo tempo.
  • Os odm e vendor partições pode depender um do outro, mas o vendor partição deve trabalhar sem uma odm partição.
  • O ABI entre odm e system é o mesmo como o ABI entre vendor e system .

Interacção directa entre o product partição e o vendor ou odm partição não é permitido. (Isso é aplicado pela SEpolicy.)

Implementando partições ODM

Antes de implementar uma nova partição, reveja as alterações AOSP relacionados .

Configurando partições ODM

Para configurar odm partições, incluir esses sinalizadores de compilação:

  • BOARD_ODMIMAGE_PARTITION_SIZE para um tamanho fixo partição
  • PRODUCT_USE_DYNAMIC_PARTITIONS e BOARD_ODMIMAGE_PARTITION_RESERVED_SIZE para uma partição dinâmica tamanho
  • BOARD_ODMIMAGE_FILE_SYSTEM_TYPE tipo de sistema de arquivo usado para a imagem ODM
  • PRODUCT_ODM_PROPERTIES para /odm/build.prop para uso dentro de um $(call inherit-product path/to/device.mk) , como em PRODUCT_ODM_PROPERTIES += product.abc=ok

Instalando um módulo em uma partição ODM

Use estas bandeiras de construção para instalar um módulo a um odm partição:

  • device_specific: true no Android.bp
  • LOCAL_ODM_MODULE := true no Android.mk

Habilitando inicialização verificada

Para evitar software malicioso de adulteração odm partições, permitir Android Verificado Bota (AVB) para as partições (assim como você faz para vendor e system partições).

Para habilitar AVB, incluir o sinalizador construção BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS . Para detalhes sobre a configuração AVB em partições dinâmicas, ver as alterações de configuração AVB .

Tratando / odm como outra partição / fornecedor

Para garantir que as alças de sistema do odm partição como um vendor partição, substituir qualquer hard-coded vendor referências com um conjunto de partições orientada por hardware (atualmente odm e vendor ). Notáveis vendor locais de referência na plataforma incluem vinculador dinâmico , gerenciador de pacotes , e shell/libc .