Atualizações de pacotes de serviços

Os pacotes de serviços podem ser atualizados como pacotes APEX, independentemente das atualizações completas do sistema. No SDV, esse processo de atualização é gerenciado pelo gerenciador de atualizações do SDV. Para que uma atualização entre em vigor, é necessário reiniciar o dispositivo.

Há suporte para dois tipos de APEX em atualizações de pacote de serviços:

  • APEX pré-instalado:uma versão anterior do pacote APEX já existe em uma das partições somente leitura (/system, /system_ext, /product, /vendor e /odm).

  • Novo APEX:não há um pacote APEX com o mesmo nome (como declarado em apex_manifest.json) em nenhuma das partições somente leitura.

APEX pré-instalado

Esse é o método mais comum e recomendado para atualizar pacotes de serviços. Para que essa atualização seja válida, o novo pacote APEX precisa atender a estes requisitos:

  • Ter o mesmo nome de pacote no apex_manifest.json que o APEX pré-instalado.

  • Declare um código de versão mais alto no apex_manifest.json do que o APEX pré-instalado.

  • Assine o APEX com o mesmo par de chaves do APEX pré-instalado.

Novo APEX

Embora usar APEXs pré-instalados seja a prática recomendada de segurança, novos APEXs são compatíveis. Ao usar essa abordagem, os parceiros são responsáveis por manter protocolos de segurança abrangentes. Essas responsabilidades incluem:

  • Gerenciar com segurança as chaves de assinatura usadas para esses APEXes.

  • Estabelecer um processo robusto para identificar e bloquear pacotes maliciosos.

  • Converter novos APEXes em APEXes pré-instalados em atualizações de sistema subsequentes sempre que possível.

Para instalar ou atualizar um novo APEX, as seguintes configurações são necessárias.

Pré-instalar chaves públicas confiáveis

Para instalar um novo APEX, a chave pública de assinatura precisa ser pré-instalada na partição de destino. Coloque a chave pública em /partition/etc/brand_new_apex/, em que /partition/ representa a partição em que o APEX está associado de acordo com as regras do Treble. Por exemplo, se a assinatura de um APEX for verificada em relação a uma chave pública em /vendor/etc/brand_new_apex/, ela vai se comportar como um APEX do fornecedor. O sistema vai rejeitar qualquer novo APEX que não seja assinado por uma chave correspondente a uma chave pública pré-instalada.

Bloquear um novo APEX malicioso

Se um novo APEX for identificado como malicioso após a instalação, ele precisará ser bloqueado usando uma atualização do sistema. Para fazer isso, adicione o nome do pacote APEX a um arquivo de lista de bloqueio em /partition/etc/brand_new_apex/blocklist.json. Essa lista de bloqueio precisa ser colocada na partição de destino do APEX (a mesma em que a chave pública foi pré-instalada). Cada partição tem um arquivo de lista de bloqueio dedicado.