Configurando o CTS

Para executar o CTS, primeiro prepare seu ambiente físico, sua máquina desktop e o dispositivo Android que você está usando para teste.

Ambiente físico

Sinalizadores Bluetooth LE

Se o dispositivo em teste (DUT) for compatível com Bluetooth LE, coloque pelo menos três sinalizadores Bluetooth LE dentro de 5 metros do DUT para teste de varredura Bluetooth LE. Esses beacons não precisam ser configurados ou emitir nada específico, e podem ser de qualquer tipo, incluindo iBeacon, Eddystone, ou mesmo dispositivos que simulam beacons BLE.

Máquinas fotográficas

Ao executar o CTS da câmera, use condições normais de iluminação com um gráfico de padrão de teste (como um padrão quadriculado). Coloque o gráfico de padrão de teste de acordo com a distância mínima de foco do DUT para garantir que ele não esteja muito próximo da lente.

Aponte os sensores da câmera para uma cena com iluminação suficiente para permitir que os sensores em teste alcancem e permaneçam no máximo de frames por segundo (FPS) configurados conforme especificado em CONTROL_AE_TARGET_FPS_RANGE . Isso se aplica a todos os sensores de câmera relatados por getCameraIdList , pois o teste itera nos dispositivos listados e mede o desempenho individualmente.

Se o DUT suportar câmeras externas, como webcams USB, conecte uma câmera externa ao executar o CTS. Caso contrário, os testes CTS falham.

GPS/GNSS

Se o DUT suportar o recurso de sistema de posicionamento global/sistema de navegação global por satélite (GPS/GNSS), forneça um sinal GPS/GNSS ao DUT em um nível de sinal adequado para recepção e cálculo de localização GPS. A parte GPS deve ser compatível com ICD-GPS-200C. Caso contrário, o sinal GPS/GNSS pode ser de qualquer tipo, incluindo um simulador de satélite ou um repetidor GPS/GNSS de sinais externos, ou você pode colocar o DUT perto o suficiente de uma janela para que ele possa receber diretamente sinal GPS/GNSS suficiente.

Wi-Fi e IPv6

Os testes CTS exigem uma rede Wi-Fi que suporte IPv6, tenha uma conexão com a Internet e possa tratar o DUT como um cliente isolado. Um cliente isolado refere-se a uma configuração em que o DUT não tem visibilidade das mensagens broadcast/multinetwork nessa sub-rede. Isso ocorre com uma configuração de AP Wi-Fi ou executando o DUT em uma sub-rede isolada sem que outros dispositivos estejam conectados.

Se você não tiver acesso a uma rede IPv6 nativa, uma rede de operadora IPv6 ou uma VPN para passar em alguns testes dependendo do IPv6, poderá usar um ponto de acesso Wi-Fi e um túnel IPv6. Veja a lista de agentes de túnel IPv6 da Wikipedia.

Wi-Fi RTT

O Android inclui a API Wi-Fi RTT para um recurso Wi-Fi round trip time (RTT) . Isso permite que os dispositivos meçam sua distância até os pontos de acesso com uma precisão de 1 a 2 metros, aumentando significativamente a precisão da localização interna. Dois dispositivos recomendados que suportam Wi-Fi RTT são o Google Wifi e o ponto de acesso fitlet2 da Compulab (definido para largura de banda de 40 MHz a 5 GHz).

Os pontos de acesso devem estar ligados, mas não requerem uma conexão de rede. Os pontos de acesso não precisam estar próximos ao dispositivo de teste, mas recomenda-se que estejam a 40 pés do DUT. Um ponto de acesso é normalmente suficiente.

Configuração da máquina desktop

ADB e AAPT

Antes de executar o CTS, verifique se você instalou as versões recentes do Android Debug Bridge (adb) e do Android Asset Packaging Tool (AAPT) e adicionou o local dessas ferramentas ao caminho do sistema de sua máquina.

Para instalar o ADB, baixe o pacote Android SDK Tools para seu sistema operacional, abra-o e siga as instruções no arquivo README incluído. Para obter informações sobre solução de problemas, consulte Instalando as ferramentas do SDK autônomo .

Certifique-se de que adb e aapt estejam no caminho do sistema. O comando a seguir pressupõe que você abriu o arquivo do pacote em seu diretório inicial:

export PATH=$PATH:$HOME/android-sdk-linux/build-tools/version

Kit de Desenvolvimento Java para Ubuntu

Instale a versão adequada do Java Development Kit (JDK) .

  • Para Android 11, instale o OpenJDK11.
  • Para Android 9 e Android 10, instale o OpenJDK9.
  • Para Android 7.0, 7.1, 8.0 e 8.1, instale o OpenJDK8.

Para obter detalhes, consulte os requisitos do JDK .

Configuração para suporte ao Python

Instale o virtualenv para sua plataforma seguindo as instruções de instalação .

Você pode verificar se a instalação foi bem-sucedida invocando virtualenv -h .

Arquivos CTS

Baixe e abra os pacotes CTS em Downloads do Compatibility Test Suite que correspondam à versão Android de seus dispositivos e todas as interfaces binárias de aplicativos (ABIs) que seus dispositivos suportam.

Baixe e abra a versão mais recente dos arquivos de mídia CTS .

Detecção de dispositivo

Siga a etapa para configurar seu sistema para detectar seu dispositivo .

Limite de memória

Você pode querer aumentar a memória máxima disponível durante a execução de teste no script cts-tradfed . Consulte o exemplo CL para obter mais informações.

Configuração do dispositivo Android

Compilações do usuário

Um dispositivo compatível é definido como um dispositivo com uma compilação assinada por usuário/chave de lançamento. Seu dispositivo deve estar executando uma imagem do sistema com base na compilação de usuário compatível conhecida (Android 4.0 ou superior) de Codenames, Tags e Build Numbers .

Propriedade de compilação do primeiro nível da API

Certos requisitos de CTS dependem da versão com a qual um dispositivo foi enviado originalmente. Por exemplo, os dispositivos fornecidos originalmente com compilações anteriores podem ser excluídos dos requisitos do sistema que se aplicam a dispositivos fornecidos com compilações posteriores.

Para disponibilizar essas informações ao CTS, os fabricantes de dispositivos podem ter definido a propriedade de tempo de construção ro.product.first_api_level . O valor dessa propriedade é o primeiro nível de API com o qual o dispositivo foi lançado comercialmente.

Os fabricantes de dispositivos podem reutilizar a implementação subjacente comum para lançar um novo produto como uma atualização de um produto existente no mesmo grupo de dispositivos. Os fabricantes de dispositivos podem, opcionalmente, definir o nível de API do produto existente para ro.product.first_api_level , para que os requisitos de atualização sejam aplicados para CTS e Treble/VTS.

Os fabricantes de dispositivos podem adicionar PRODUCT_PROPERTY_OVERRIDES ao arquivo device.mk para definir essa propriedade, conforme mostrado no exemplo a seguir:

#ro.product.first_api_level indicates the first api level that the device has
been commercially launched on.
PRODUCT_PROPERTY_OVERRIDES +=\
ro.product.first_api_level=21

Primeiro nível de API para Android 9 ou superior

Para dispositivos lançados com Android 9 ou superior, defina a propriedade ro.product.first_api_level como um valor válido de Codenames, Tags e Build Numbers .

Primeiro nível de API para Android 8.x ou inferior

Para dispositivos lançados no Android 8.x ou inferior, desmarque (remova) a propriedade ro.product.first_api_level para a primeira versão do produto. Para todas as compilações subsequentes, defina ro.product.first_api_level com o valor correto do nível de API. Isso permite que a propriedade identifique corretamente um novo produto e preserve as informações sobre o primeiro nível de API do produto. Se o sinalizador não estiver definido, o Android atribuirá Build.VERSION.SDK_INT a ro.product.first_api_level .

Pacotes de calços CTS

O Android 10 ou superior inclui um formato de pacote chamado APEX . Para executar testes CTS para APIs de gerenciamento do APEX (como atualizar para uma nova versão ou relatar APEXes ativos), você deve pré-instalar um pacote CtsShimApex em uma partição /system .

O teste de validação do calço APEX verifica a implementação do CtsShimApex .

requisitos ro.apex.updatable

  • Se a propriedade ro.apex.updatable for definida como true , CtsShimApex será necessário para todos os dispositivos que oferecem suporte ao gerenciamento de pacotes APEX.

  • Se a propriedade ro.apex.updatable estiver ausente ou não estiver definida, CtsShimApex não precisará ser pré-instalado em um dispositivo.

O teste de validação do calço APEX verifica a implementação do CtsShimApex .

CtsShim pré-instala e pré-carrega

A partir do Android 11, CtsShimApex contém dois aplicativos pré-criados (criados a partir da fonte de compilação ), que não contêm nenhum código, exceto o manifesto. O CTS usa esses aplicativos para testar privilégios e permissões.

Se o dispositivo não oferecer suporte ao gerenciamento de pacotes APEX (ou seja, a propriedade ro.apex.updatable estiver ausente ou não estiver definida) ou se o dispositivo estiver executando a versão 10 ou inferior, os dois aplicativos pré-compilados deverão ser pré-instalados no sistema separadamente.

Versão do dispositivo Pré-instalar
(se compatível com APEX)
Pré-carregar
BRAÇO x86 BRAÇO x86
Android 12 android12-braço-liberação
em /system/apex/com.android.apex.cts.shim.apex
versão android12-x86
em /system/apex/com.android.apex.cts.shim.apex
android12-arm-CtsShim.apk
em /system/app/CtsShimPrebuilt.apk

android12-arm-CtsShimPriv.apk
em /system/priv-app/CtsShimPrivPrebuilt.apk

android12-x86-CtsShim.apk
em /system/app/CtsShimPrebuilt.apk

android12-x86-CtsShimPriv.apk
em /system/priv-app/CtsShimPrivPrebuilt.apk

Android 11 android11-braço-liberação
em /system/apex/com.android.apex.cts.shim.apex
versão android11-x86
em /system/apex/com.android.apex.cts.shim.apex
android11-arm-CtsShim.apk
em /system/app/CtsShimPrebuilt.apk

android11-arm-CtsShimPriv.apk
em /system/priv-app/CtsShimPrivPrebuilt.apk

android11-x86-CtsShim.apk
em /system/app/CtsShimPrebuilt.apk

android11-x86-CtsShimPriv.apk
em /system/priv-app/CtsShimPrivPrebuilt.apk

Android 10 versão android10
em /system/apex/com.android.apex.cts.shim.apex
android10-arm-CtsShim.apk
em /system/app/CtsShimPrebuilt.apk

android10-arm-CtsShimPriv.apk
em /system/priv-app/CtsShimPrivPrebuilt.apk

android10-x86-CtsShim.apk
em /system/app/CtsShimPrebuilt.apk

android10-x86-CtsShimPriv.apk
em /system/priv-app/CtsShimPrivPrebuilt.apk

Android 9, O e O-MR1 N / D N / D arm-CtsShim.apk
em /system/app/CtsShimPrebuilt.apk

arm-CtsShimPriv.apk
em /system/priv-app/CtsShimPrivPrebuilt.apk

x86-CtsShim.apk
em /system/app/CtsShimPrebuilt.apk

x86-CtsShimPriv.apk
em /system/priv-app/CtsShimPrivPrebuilt.apk

Para passar nos testes, pré-carregue os aplicativos nos diretórios apropriados na imagem do sistema sem assinar novamente os aplicativos.

Miniaplicativo de amostra

O Android 9 introduziu as APIs móveis abertas. Para dispositivos que relatam mais de um elemento seguro, o CTS adiciona casos de teste para validar o comportamento das APIs Open Mobile. Esses casos de teste exigem a instalação única de um applet de amostra no Secure Element (eSE) incorporado do DUT ou no cartão SIM usado pelo DUT. O applet de amostra eSE e o applet de amostra SIM podem ser encontrados em AOSP.

Consulte CTS Test for Secure Element para obter informações mais detalhadas sobre casos de teste Open Mobile API e casos de teste de controle de acesso.

Requisitos de armazenamento

Os testes de estresse de mídia do CTS exigem que os videoclipes estejam em armazenamento externo ( /sdcard ). A maioria dos clipes são de Big Buck Bunny , que tem direitos autorais da Blender Foundation sob a licença Creative Commons Attribution 3.0 .

O espaço necessário depende da resolução máxima de reprodução de vídeo suportada pelo dispositivo. Consulte a seção 5 no documento Definição de compatibilidade do Android para obter a versão da plataforma das resoluções necessárias.

Aqui estão os requisitos de armazenamento por resolução máxima de reprodução de vídeo:

  • 480 x 360: 98 MB
  • 720 x 480: 193 MB
  • 1280x720: 606 MB
  • 1920 x 1080: 1863 MB

Tela e armazenamento

  • Qualquer dispositivo que não tenha uma tela incorporada precisa estar conectado a uma tela.
  • Se o dispositivo tiver um slot para cartão de memória, conecte um cartão SD vazio. Use um cartão SD que suporte barramento de velocidade ultra-alta (UHS) com capacidade SDHC ou SDXC ou um com pelo menos classe de velocidade 10 ou superior para garantir que ele possa passar pelo CTS.

  • Se o dispositivo tiver slots de cartão SIM, conecte um cartão SIM ativado em cada slot. Se o dispositivo for compatível com SMS, cada cartão SIM deverá ter seu próprio campo de número preenchido. Para dispositivos com Android 12 ou superior, todos os cartões SIM devem ter suporte para armazenar números de discagem abreviada (ADN). Os cartões GSM e USIM com o arquivo dedicado de telecomunicações (DF Telecom ) atendem a esse requisito.

Desenvolvedor UICC

Para executar testes de API de operadora CTS, o dispositivo precisa usar um SIM com privilégios de operadora CTS que atenda aos requisitos especificados em Preparando o UICC .

Configuração do dispositivo Android

  1. Os dados de fábrica redefinem o dispositivo: Configurações > Fazer backup e redefinir > Redefinir dados de fábrica .

  2. Defina o idioma do seu dispositivo para inglês ( Estados Unidos ): Configurações > Idioma e entrada > Idioma .

  3. Se o dispositivo suportar a personalização de fontes padrão, defina a família de fontes sans-serif padrão como Roboto (a família de fontes sans-serif padrão usada em compilações AOSP).

  4. Ative a configuração de localização se houver um recurso de GPS ou rede Wi-Fi/celular no dispositivo: Configurações > Localização > Ativado .

  5. Conecte-se a uma rede Wi-Fi que suporte IPv6, possa tratar o DUT como um cliente isolado (consulte Ambiente físico acima) e tenha uma conexão com a Internet: Configurações > Wi-Fi .

  6. Certifique-se de que nenhum padrão de bloqueio ou senha esteja definido no dispositivo: Configurações > Segurança > Bloqueio de tela > Nenhum .

  7. Habilite a depuração USB no seu dispositivo: Configurações > Opções do desenvolvedor > Depuração USB .

  8. Defina a hora para o formato de 12 horas: Configurações > Data e hora > Usar formato de 24 horas > Desligado .

  9. Defina o dispositivo para ficar acordado: Configurações > Opções do desenvolvedor > Ficar acordado > Ativado .

  10. Somente no Android 5.xe 4.4.x , defina o dispositivo para permitir locais fictícios: Configurações > Opções do desenvolvedor > Permitir locais fictícios > Ativado .

  11. No Android 4.2 ou superior , desative a verificação de aplicativos USB: Configurações > Opções do desenvolvedor > Verificar aplicativos por USB > Desativado .

  12. Inicie o navegador e descarte qualquer tela de inicialização/configuração.

  13. Conecte a máquina desktop que será usada para testar o dispositivo com um cabo USB.

  14. Antes de executar o CTS, defina Roboto2 como a fonte sans-serif usando uma configuração de affordance acessível ao usuário (não oculta).

Instalação do arquivo

Instale e configure aplicativos auxiliares no dispositivo.

  1. Configure seu dispositivo de acordo com sua versão CTS:

    • CTS versões 2.1 R2 a 4.2 R4: Configure seu dispositivo (ou emulador) para executar os testes de acessibilidade com: abd install -r android-cts/repository/testcases/CtsDelegatingAccessibilityService.apk

      No dispositivo, habilite a delegação: Configurações > Acessibilidade > Acessibilidade > Delegando Serviço de Acessibilidade .

    • CTS versões 6.x ou inferior: em dispositivos que declaram android.software.device_admin , configure seu dispositivo para executar o teste de administração do dispositivo usando: adb install -r android-cts/repository/testcases/CtsDeviceAdmin.apk`

      Em Configurações > Segurança > Selecionar administradores de dispositivos , habilite os dois administradores de dispositivos android.deviceadmin.cts.CtsDeviceAdminReceiver* . Certifique-se de que android.deviceadmin.cts.CtsDeviceAdminDeactivatedReceiver e quaisquer outros administradores de dispositivos pré-carregados permaneçam desativados.

  2. Copie os arquivos de mídia CTS para o dispositivo da seguinte forma:

    1. Navegue ( cd ) para o caminho onde os arquivos de mídia são baixados e descompactados.
    2. Altere as permissões do arquivo: chmod u+x copy_media.sh

    3. Copie os arquivos necessários:

      • Para copiar clipes até uma resolução de 720x480, execute:

        ./copy_media.sh 720x480
        
      • Se você não tiver certeza da resolução máxima, copie todos os arquivos:

        ./copy_media.sh all
        
      • Se houver vários dispositivos em adb, adicione a opção serial ( -s ) de um dispositivo específico ao final. Por exemplo, para copiar até 720x480 para o dispositivo com serial 1234567, execute:

        ./copy_media.sh 720x480 -s 1234567