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

Partições de produto

Android 9 e superior inclui suporte para a construção de product partições usando o sistema de compilação Android. Anteriormente, 8.x Android imposta a separação de componentes específicos do SoC do system partição para o vendor de partição sem dedicar espaço para componentes específicos do OEM construídos a partir do sistema de compilação Android. Android 9 e superior fornece adicionais permissões e recursos whitelisting que se aplicam a priv-aplicativos em partições diferentes.

Sobre partições de produto

Muitos OEMs personalizam a imagem do sistema AOSP para implementar seus próprios recursos, bem como os requisitos da operadora. No entanto, essas personalizações tornam impossível usar uma única imagem do sistema para vários SKUs de software. Cada imagem deve ser diferente para oferecer suporte às personalizações, como locais ou operadoras diferentes. Usando um separada product partição para conter personalizações torna possível usar uma imagem de sistema único para software múltiplos SKUs. (O system código genérico partição hosts que podem ser compartilhados entre muitos software SKUs). O vendor de partição continua código BSP-specific SoC hospedeira que pode ser compartilhado entre vários dispositivos com base no dado SoC.

Usando partições separadas tem algumas desvantagens, tais como a gestão do espaço do disco (uma quantidade limitada de espaço deve permanecer reservada para futuro crescimento) e a manutenção de uma aplicação estável binário de interface (ABI) entre as partições. Antes de decidir usar product partições, ter tempo para analisar sua implementação AOSP única e possíveis táticas de mitigação (como reparticionando um dispositivo durante uma atualização over-the-air (OTA) , o que não é feito pelo Google, mas é feito por alguns OEMs ) Particionamento dinâmico será uma boa solução para isso.

Partições e permissões do produto

No Android 9 e superior, uma mudança nas permissões e no processo de whitelisting afeta como você concede permissões priv-apps nas partições do seu produto. O permissions.xml arquivo deve residir na mesma partição como os priv-apps. Colocar uma permissions.xml arquivo no system partição para priv-apps não se estende essas permissões para priv-apps no product partição, mesmo que o primeiro é uma extensão deste último. Para mais detalhes sobre as permissões e processos whitelisting, consulte privilegiada Permissão Whitelisting .

Legado / oem vs / produto

Temos dois tipos de atributos do product partição dependendo da aplicação da interface do produto . Além disso, o product partição é diferente do que o legado oem partição:

Partição Atributos
oem
  • Não atualizável; geralmente brilhou uma vez na fábrica.
  • Construído por pequenas variações, como marca e cor. A existência de diferentes oem conteúdo da partição não significa que o software do produto é diferente.
  • O system partição não dependem do oem partição. (Ele usa o oem partição somente quando um arquivo específico é encontrado lá).
  • Só usa API pública sobre o system partição.
product
  • Atualizável
  • Juntamente com a imagem do sistema (eles são atualizados juntos)
  • Construído por produto ou famílias de produtos.
  • Partição do sistema pode depender de product partição.
  • Pode usar APIs não públicas, pois são atualizadas simultaneamente.
product (interfaces de forçados)
  • Atualizável
  • Desacoplado com a imagem do sistema.
  • Construído por produto ou famílias de produtos.
  • O system partição não dependem do product partição.
  • Não é possível usar APIs escondidas, mas só usa APIs públicas e do sistema no system partição.

Por estas razões, Android 9 suporta o product partição, mantendo o suporte para o legado oem partição, para dispositivos que dependem dele. Para dissociar o product partição do system partição, Android 11 suportes aplicar product de interfaces .

/ componentes do produto

O product partição contém os seguintes componentes:

  • Propriedades do sistema específica do produto ( /product/build.prop )
  • RROs específicos do produto ( /product/overlay/*.apk )
  • Aplicativos específicos do produto ( /product/app/*.apk )
  • Específicos do produto priv-apps ( /product/priv-app/*.apk )
  • Bibliotecas específicas do produto ( /product/lib/* )
  • Bibliotecas Java específico do produto ( /product/framework/*.jar )
  • Configurações do sistema Framework Android específica do produto ( /product/etc/sysconfig/* e /product/etc/permissions/* )
  • Arquivos de mídia específicos do produto ( /product/media/audio/* )
  • Específicos do produto bootanimation arquivos

Sem custom_images

Você não pode usar custom_images . Eles carecem de suporte para o seguinte:

  • Instalação de módulos para um alvo específico. custom_images suporta a cópia de artefatos em uma imagem, mas não pode instalar um módulo em uma partição específica, especificando a sua partição de destino como parte de uma regra de construção.
  • Apoio Soong. custom_images não pode ser construída usando o sistema de compilação Soong.
  • Suporte para a atualização OTA. custom_images são usados como imagens fábrica ROM que não podem receber atualizações OTA.

Manter ABIs entre partições

O product partição em Android 9 é uma extensão do system partição. Há um ABI fraca entre product e system partições, então ambos devem ser atualizados ao mesmo tempo, ea ABI deve ser baseada em SDK do sistema. Se o SDK sistema não cobrir todas as superfícies API entre product e system , OEMs devem manter suas próprias ABIs entre as duas partições.

Os product e system partições pode ter dependência de si. No entanto, testes com a imagem de sistema genérico (GSI) deve funcionar corretamente sem o product partição.

Quando os product interfaces são cumpridas, o product partição é desacoplada com o system partição. O product partição utiliza apenas as interfaces permitida do system partição.

O product partição não deve ter qualquer dependência de vendor de partição. Interação direta entre os product e vendor é proibido partições. (Isso é aplicado pela SEpolicy.)

Implementando partições de produto

Antes de implementar uma nova partição do produto, reveja as alterações na partição do produto relacionados em AOSP . Em seguida, a criação de product , incluem as seguintes bandeiras de tabuleiro ou produto de construção:

  • BOARD_USES_PRODUCTIMAGE
  • BOARD_PRODUCTIMAGE_PARTITION_SIZE
  • BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE
  • PRODUCT_PRODUCT_PROPERTIES para /product/build.prop . Estes devem estar dentro de um $(call inherit-product path/to/device.mk) , como em PRODUCT_PRODUCT_PROPERTIES += product.abc=ok .

Instalando um módulo na partição do produto

Use as seguintes bandeiras de construção para instalar um módulo para o product partição.

  • product_specific: true no Android.bp
  • LOCAL_PRODUCT_MODULE := true no Android.mk

Ativando inicialização verificada

Para evitar que o product partição seja adulterado por software malicioso, active Android Verificado Bota (AVB) para essa partição (assim como você faz para os vendor e system partições). Para habilitar AVB, incluem as seguintes bandeiras de compilação: BOARD_AVB_PRODUCT_ADD_HASHTREE_FOOTER_ARGS .