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

Armazenamento adotável

O Android sempre ofereceu suporte a acessórios de armazenamento externo (como cartões SD), mas esses acessórios eram historicamente limitados ao armazenamento simples de arquivos, devido à impermanência esperada e à proteção mínima de dados oferecida ao armazenamento externo tradicional . O Android 6.0 introduziu a capacidade de adotar mídia de armazenamento externo para atuar como armazenamento interno.

Quando a mídia de armazenamento externa é adotada, ela é formatada e criptografada para funcionar apenas com um único dispositivo Android por vez. Como a mídia está fortemente ligada ao dispositivo Android que a adotou, ela pode armazenar com segurança aplicativos e dados privados de todos os usuários.

Quando os usuários inserem uma nova mídia de armazenamento (como um cartão SD) em um local adotável, o Android pergunta a eles como desejam usar a mídia. Eles podem escolher adotar a mídia, que formata e criptografa, ou podem continuar a usá-la como está para armazenamento simples de arquivos. Se eles escolherem adotar, a plataforma oferece a migração do conteúdo do armazenamento compartilhado primário (normalmente montado em /sdcard ) para a mídia recém-adotada, liberando espaço valioso no armazenamento interno. Ao contrário do armazenamento tradicional, que é limitado a 2 TB devido ao uso de MBR , o armazenamento adotável usa GPT e, portanto, tem um limite de armazenamento de arquivo de ~ 9ZB.

Os aplicativos podem ser colocados na mídia de armazenamento adotada apenas quando o desenvolvedor indicou suporte por meio do atributo android:installLocation . Novas instalações de aplicativos compatíveis são automaticamente colocadas no dispositivo de armazenamento com mais espaço livre, e os usuários podem mover aplicativos compatíveis entre dispositivos de armazenamento no aplicativo Configurações . Os aplicativos movidos para a mídia adotada são lembrados enquanto a mídia é ejetada e retornam quando a mídia é reinserida.

Segurança

A plataforma gera aleatoriamente chaves de criptografia para cada dispositivo adotado e as armazena no armazenamento interno do dispositivo Android. Isso efetivamente torna a mídia adotada tão segura quanto o armazenamento interno. As chaves são associadas a dispositivos adotados com base no GUID de partição adotado.

Se o dispositivo estiver configurado para usar criptografia baseada em arquivo (FBE) em seu armazenamento interno, o armazenamento adotável usará FBE e criptografia de metadados . Caso contrário, o armazenamento adotável usa criptografia de disco completo (FDE).

O layout em disco do dispositivo adotado espelha de perto a partição de dados interna, incluindo rótulos SELinux, etc. Quando multiusuário é compatível com o dispositivo Android, o dispositivo de armazenamento adotado também suporta multiusuário com o mesmo nível de isolamento interno armazenar.

Como o conteúdo de um dispositivo de armazenamento adotado está fortemente vinculado ao dispositivo Android que o adotou, as chaves de criptografia não devem ser extraídas do dispositivo pai e, portanto, o dispositivo de armazenamento não pode ser montado em outro lugar.

Se o seu dispositivo usa FBE, consulte a documentação do FBE e a documentação de criptografia de metadados para saber como configurar o FBE e a criptografia de metadados no armazenamento adotável.

Desempenho e estabilidade

Apenas mídia de armazenamento externo em locais estáveis, como um slot dentro de um compartimento de bateria ou atrás de uma tampa protetora, deve ser considerada para adoção para ajudar a evitar perda acidental de dados ou corrupção. Em particular, os dispositivos USB conectados a um telefone ou tablet nunca devem ser considerados para adoção. Uma exceção comum seria uma unidade USB externa conectada a um dispositivo tipo TV, porque a TV inteira normalmente é instalada em um local estável.

Quando um usuário adota um novo dispositivo de armazenamento, a plataforma executa um benchmark e compara seu desempenho com o armazenamento interno. Se o dispositivo adotado for significativamente mais lento do que o armazenamento interno, a plataforma avisa o usuário sobre uma experiência possivelmente degradada. Este benchmark foi derivado do comportamento de I / O real de aplicativos Android populares. Atualmente, a implementação do AOSP avisará apenas os usuários além de um único limite, mas os fabricantes de dispositivos podem adaptar isso ainda mais, como rejeitar a adoção completamente se o cartão for extremamente lento.

Os dispositivos adotados devem ser formatados com um sistema de arquivos que suporte permissões POSIX e atributos estendidos, como ext4 ou f2fs . Para desempenho ideal, o sistema de arquivos f2fs é recomendado para dispositivos de armazenamento baseados em flash.

Ao realizar manutenção ociosa periódica, a plataforma emite FI_TRIM para a mídia adotada, assim como faz para o armazenamento interno. A especificação atual do cartão SD não suporta o comando DISCARD ; mas o kernel em vez disso volta para o comando ERASE , que o firmware do cartão SD pode escolher usar para fins de otimização.

Testando

Para testar se o armazenamento adotável está funcionando, execute este teste CTS:

cts-tradefed run commandAndExit cts-dev \
    -m CtsAppSecurityHostTestCases \
    -t android.appsecurity.cts.AdoptableHostTest

Para verificar o comportamento de unidades USB e cartões SD quando um dispositivo não tem um slot embutido ou quando o conector USB está sendo usado para uma conexão adb ativa, use:

adb shell sm set-virtual-disk true