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,/vendore/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.jsonque o APEX pré-instalado.Declare um código de versão mais alto no
apex_manifest.jsondo 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.