blob: b59725448ca36ad2d13b50c4623e2ddff01185c6 [file] [log] [blame]
<html devsite><head>
<meta name="book_path" value="/_book.yaml"/>
<meta name="project_path" value="/_project.yaml"/>
</head>
<body>
<!--
Copyright 2018 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<h1 id="android_release_notes" class="page-title">Notas da versão do Android 9</h1>
<p>O Android 9 foi lançado. Esta página resume os principais recursos dessa versão e fornece links para outras informações, quando disponíveis. Os resumos de recursos são organizados de acordo com o local da documentação do recurso neste site. Consulte as <a href="/setup/start/site-updates#Aug-2018">Atualizações do site de agosto de 2018</a> para ver um guia das transferências e renomeações das seções.</p>
<h2 id="build">Versão</h2>
<h3 id="generic_system_image_gsi">Imagem genérica do sistema (GSI, na sigla em inglês)</h3>
<p><a href="/setup/build/gsi">Imagem genérica do sistema (GSI)</a> descreve a GSI para o Android 9, incluindo detalhes sobre as diferenças entre GSIs para dispositivos que são lançados com o Android 9 e aqueles que são atualizados para essa versão.</p>
<h2 id="architecture">Arquitetura</h2>
<h3 id="hardware_abstraction_layer">Camada de abstração de hardware</h3>
<h4 id="hidl_framework_backwards_compatibility">Compatibilidade de HIDL com versões anteriores do framework</h4>
<p>A <a href="/devices/architecture/hal/framework-testing">Verificação da compatibilidade de HIDL com versões anteriores do framework</a> é um método para verificar a retrocompatibilidade do framework.</p>
<h4 id="dynamically_available_hals">HALs com disponibilidade dinâmica</h4>
<p><a href="/devices/architecture/hal/dynamic-lifecycle">HALs com disponibilidade dinâmica</a> são compatíveis com o desligamento dinâmico de subsistemas de hardware do Android quando eles não estão em uso ou não são necessários.</p>
<h3 id="hidl">HIDL</h3>
<h4 id="hidl_memory_block">Bloco de memória HIDL</h4>
<p>O <a href="/devices/architecture/hidl/memoryblock">Bloco de memória HIDL</a> é uma camada abstrata criada em <code>hidl_memory</code>, <code>HIDL @1.0::IAllocator</code> e <code>HIDL @1.0::IMapper</code>. Ele é projetado para serviços HIDL que têm vários blocos de memória para compartilhar um único heap de memória.</p>
<h3 id="device_tree_overlays">Sobreposições da árvore de dispositivos</h3>
<h4 id="compressed_overlays">Sobreposições compactadas</h4>
<p>Esta versão traz compatibilidade com o uso de <a href="/devices/architecture/dto/optimize#compressed-overlays">sobreposições compactadas</a> na imagem da Sobreposição de blob da árvore de dispositivos (DTBO, na sigla em inglês) ao usar a versão 1 do cabeçalho da tabela da árvore de dispositivos.</p>
<h4 id="dto_updates">Atualizações de DTO</h4>
<p>Esta versão requer que o carregador de inicialização não modifique as propriedades definidas nas <a href="/devices/architecture/dto/#p-update">sobreposições da árvore de dispositivos</a> (DTO, na sigla em inglês) antes de transmitir o blob da árvore de dispositivos unificado para o kernel.</p>
<h4 id="dto_image_header_versioning">Controle de versão do cabeçalho de imagem de DTBO</h4>
<p>Esta versão introduz um <a href="/devices/architecture/dto/partitions">novo campo de versão</a> no cabeçalho de imagem de DTBO.</p>
<h4 id="dtbo_verification">Verificação de DTBO</h4>
<p>Esta versão requer uma partição de DTBO. Para adicionar nós ou fazer alterações nas propriedades no SoC DT, o carregador de inicialização precisa sobrepor dinamicamente um DT específico do dispositivo sobre o SoC DT. Para ver mais informações, consulte <a href="/devices/architecture/dto/compile">Compilação e verificação</a>.</p>
<h4 id="kernel_compliance">Conformidade com o kernel</h4>
<p>Esta versão inclui mudanças nos requisitos que afetam o kernel, as interfaces dele e o uso de DTBOs. Para ver mais informações, consulte estas páginas:</p>
<ul>
<li><a href="/devices/architecture/kernel/releases">Versões e atualizações do Kernel estável</a></li>
<li><a href="/devices/architecture/kernel/android-common">Kernels comuns do Android</a></li>
<li><a href="/devices/architecture/kernel/modular-kernels">Requisitos do Kernel modular</a></li>
<li><a href="/devices/architecture/kernel/reqs-interfaces">Requisitos de interface</a></li>
<li><a href="/devices/architecture/dto/">Sobreposições da árvore de dispositivos</a></li>
</ul>
<h3 id="vendor_ndk">NDK do fornecedor</h3>
<h4 id="vndk_design">VNDK: design</h4>
<p>Para ver informações sobre as alterações no design do VNDK nesta versão, consulte estas páginas:</p>
<ul>
<li><a href="/devices/architecture/vndk/index">Kit de desenvolvimento nativo do fornecedor (VNDK, na sigla em inglês)</a></li>
<li><a href="/devices/architecture/vndk/build-system">Compatibilidade com o sistema de criação do VNDK</a></li>
<li><a href="/devices/architecture/vndk/deftool">Ferramenta de definição de VNDK</a></li>
<li><a href="/devices/architecture/vndk/dir-rules-sepolicy">Diretórios, regras e política do SELinux</a></li>
<li><a href="/devices/architecture/vndk/extensions">Extensões do VNDK</a></li>
<li><a href="/devices/architecture/vndk/linker-namespace">Namespace do vinculador</a></li>
</ul>
<h4 id="vndk_abi_checker">VNDK: verificador de ABI</h4>
<p><a href="/devices/architecture/vndk/abi-stability">Estabilidade de ABI</a> descreve o processo para garantir que as alterações feitas nas bibliotecas do VNDK mantenham a conformidade com a Interface binária do aplicativo (ABI, na sigla em inglês).</p>
<h4 id="vndk_snapshots">Instantâneos de VNDK</h4>
<p><a href="/devices/architecture/vndk/snapshot-design">Os instantâneos de VNDK</a> podem ser usados por uma imagem do sistema para fornecer as bibliotecas VNDK corretas para as imagens do fornecedor, mesmo quando as imagens do sistema e do fornecedor são criadas com base em versões diferentes do Android.</p>
<h3 id="vendor_interface_object">Objeto da interface do fornecedor</h3>
<p>As páginas a seguir na seção <a href="/devices/architecture/vintf/">Objeto da interface do fornecedor</a> descrevem as atualizações do objeto da interface do fornecedor nesta versão:</p>
<ul>
<li><a href="/devices/architecture/vintf/objects">Manifestos</a></li>
<li><a href="/devices/architecture/vintf/fcm">Ciclo de vida do FCM</a></li>
<li><a href="/devices/architecture/vintf/dm">Desenvolvimento do manifesto do dispositivo</a></li>
</ul>
<h4 id="hidl_deprecation_schedule">Programação de suspensão de uso do HIDL</h4>
<p>As páginas a seguir descrevem como o Android suspende o uso e remove HIDL HALs:</p>
<ul>
<li><a href="/devices/architecture/vintf/fcm">Ciclo de vida do FCM</a></li>
<li><a href="/devices/architecture/vintf/dm">Desenvolvimento do manifesto do dispositivo</a></li>
</ul>
<h3 id="bootloader">Carregador de inicialização</h3>
<h4 id="product_partitions">Partições de produtos</h4>
<p>Esta versão é compatível com a criação de <a href="/devices/bootloader/product-partitions">partições <code>/product</code></a> usando o sistema de criação do Android. Anteriormente, o Android 8.x aplicava a separação de componentes específicos do system on chip (SoC) da partição <code>/system</code> para a partição <code>/vendor</code> sem dedicar espaço para componentes específicos de OEM criados com base no sistema de criação do Android.</p>
<h4 id="canonical_boot_reason_compliance">Conformidade do motivo de inicialização canônico</h4>
<p>O <a href="/devices/bootloader/boot-reason">motivo de inicialização canônico</a> descreve as alterações na especificação do motivo de inicialização do carregador de inicialização nesta versão.</p>
<h4 id="system_as_root">Sistema como raiz</h4>
<p>Todos os dispositivos que são lançados com esta versão precisam usar o <a href="/devices/bootloader/system-as-root">sistema como raiz</a>, que combina o <code>ramdisk.img</code> com o <code>system.img</code> (também conhecido como no-ramdisk), que por sua vez é ativado como <code>rootfs</code>.</p>
<h4 id="boot_image_header_versioning">Controle de versão para cabeçalho de imagem de inicialização</h4>
<p>A partir desta versão, o cabeçalho da imagem de inicialização contém um <a href="/devices/bootloader/boot-image-header">campo para indicar a versão do cabeçalho</a>.
O carregador de inicialização precisa verificar esse campo de versão do cabeçalho e analisar o cabeçalho adequadamente.</p>
<h4 id="dtbo_in_recovery">DTBO em recuperação</h4>
<p>Para evitar falhas de OTA devido a incompatibilidades entre a imagem de recuperação e a partição de DTBO em dispositivos não A/B, a imagem de recuperação precisa conter <a href="/devices/bootloader/recovery-image">informações da imagem do DTBO</a>.</p>
<h3 id="display">Tela</h3>
<h4 id="display_cutouts">Cortes de tela</h4>
<p>Os <a href="/devices/tech/display/display-cutouts">cortes da tela</a> permitem que os desenvolvedores de apps criem experiências imersivas, de ponta a ponta, deixando ainda espaço para sensores importantes na parte frontal dos dispositivos.</p>
<h4 id="rotate_suggestions">Sugestões de rotação</h4>
<p>As atualizações do <a href="/devices/tech/display/rotate-suggestions">comportamento de rotação da tela</a> nesta versão incluem compatibilidade com um controle voltado ao usuário para fixar a rotação da tela como paisagem ou retrato.</p>
<h4 id="synchronized_app_transitions">Transições de app sincronizadas</h4>
<p>As <a href="/devices/tech/display/synched-app-transitions">transições de app sincronizadas</a> possibilitam novas animações de transição de apps.</p>
<h4 id="text_classification_formerly_textclassifier">Classificação de texto (anteriormente TEXTCLASSIFIER)</h4>
<p>Esta versão introduz um <a href="/devices/tech/display/textclassifier">serviço de Classificador de texto</a>, que agora é a maneira recomendada de implementar classificação de texto e uma implementação padrão do serviço.</p>
<h4 id="wide_gamut_color">Ampla gama de cores</h4>
<p>Esta versão introduz compatibilidade com uma ampla gama de cores, incluindo:</p>
<ul>
<li>High Dynamic Range (HDR)</li>
<li>Processamento de conteúdo no espaço de cores BT2020, mas não como um espaço para dados de destino final</li>
</ul>
<p>Para usar a ampla gama de cores, a pilha de exibição completa de um dispositivo (tela, compositor de hardware, GPU etc.) precisa ser compatível com a ampla gama de cores ou formatos de buffer. Os dispositivos não precisam declarar compatibilidade com uma ampla gama de cores, mesmo se o hardware for compatível. No entanto, a ampla gama de cores precisa ser ativada para aproveitar o hardware ao máximo. Para evitar uma experiência visual inconsistente, a ampla gama de cores não pode ser desativada durante o tempo de execução.</p>
<h2 id="compatibility">Compatibilidade</h2>
<h3 id="android_compatibility_definition_document_cdd">Documento de definição de compatibilidade do Android (CDD, na sigla em inglês)</h3>
<p>O <a href="/compatibility/android-cdd">Documento de definição de compatibilidade do Android 9</a> itera as <a href="/compatibility/cdd">versões anteriores</a> com atualizações de novos recursos e alterações nos requisitos da funcionalidade lançada anteriormente.</p>
<h2 id="settings">Configurações</h2>
<h3 id="better_app_widgets">Melhores widgets de apps</h3>
<p>O framework de widget de app do Android agora oferece maior visibilidade sobre as interações do usuário, especificamente quando um usuário exclui ou adiciona manualmente widgets. Essa funcionalidade é fornecida por padrão com o Launcher3.</p>
<p>Os fabricantes precisam atualizar os apps deles da tela de início (que são fornecidos com os dispositivos) para serem compatíveis com esse recurso, se não forem baseados no Launcher3. Os OEMs precisam oferecer compatibilidade com a nova <a href="https://developer.android.com/reference/android/appwidget/AppWidgetProviderInfo#widgetFeatures" class="external">API widgetFeatures</a> na tela de início padrão deles.</p>
<p>A API, por si só, não garante o funcionamento de ponta a ponta, a menos que as telas de início a implementem conforme o esperado. O AOSP inclui uma implementação de exemplo. Consulte o código de alteração do AOSP Iccd6f965fa3d61992244a365efc242122292c0ca para ver o código de exemplo fornecido.</p>
<h3 id="device_state_change_notifications_to_package_installers">Notificações de alteração de estado do dispositivo para instaladores de pacotes</h3>
<p>Agora, uma transmissão protegida do sistema pode ser enviada para apps que têm a permissão <code>INSTALL_PACKAGES</code> sempre que uma alteração em propriedades como localidade ou densidade de exibição ocorre. Receptores podem ser registrados no manifesto, e um processo será ativado para receber a transmissão. Isso é útil para instaladores de pacotes que queiram instalar outros componentes de apps mediante essas alterações, o que raramente acontecerá, porque as alterações de configuração qualificadas para acionar essa transmissão são raras.</p>
<p>O código-fonte da notificação de alteração de estado do dispositivo encontra-se nos seguintes locais em <code>platform/frameworks/base</code>:</p>
<ul>
<li><code>api/system-current.txt</code></li>
<li><code>core/java/android/content/Intent.java</code></li>
<li><code>core/res/AndroidManifest.xml</code></li>
<li><code>services/core/java/com/android/server/am/ActivityManagerService.java</code></li>
</ul>
<h3 id="information_architecture">Arquitetura de informações</h3>
<p>As alterações na <a href="/devices/tech/settings/info-architecture">arquitetura de informações do app Config.</a> oferecem mais funcionalidades de configurações e uma implementação facilitada.</p>
<h2 id="tests">Testes</h2>
<h3 id="atest">Atest</h3>
<p><a href="/compatibility/tests/development/atest">Atest</a> é uma nova ferramenta de linha de comando que permite que os usuários criem, instalem e executem testes do Android localmente, acelerando muito as execuções de teste sem exigir conhecimento das opções de linha de comando do arcabouço de testes da Trade Federation.</p>
<h3 id="compatibility_test_suite_cts">Teste de compatibilidade (CTS, na sigla em inglês)</h3>
<h4 id="cts_downloads">Downloads do CTS</h4>
<p>Novos pacotes do CTS compatíveis com o Android 9 foram enviados por upload para a página de <a href="/compatibility/cts/downloads">Downloads do CTS</a>. O código-fonte dos testes incluídos pode ser sincronizado com a tag <code>android-cts-9.0_r1</code> na árvore de código aberto.</p>
<h4 id="cts_options">Opções do CTS</h4>
<p>Para o Android 9, o CTS v2 recebe o seguinte <a href="/compatibility/cts/run#ctsv2_reference">comando e argumento</a>:</p>
<ul>
<li><code>run retry</code>: repete todos os testes que falharam ou não foram executados nas sessões anteriores.</li>
<li><code>‘--shard-count</code>: fragmenta uma execução do CTS em um número determinado de partes independentes para execução em vários dispositivos em paralelo.</li>
</ul>
<p>Além disso, os comandos "--retry-type" anteriormente não documentados foram incluídos na mesma <a href="/compatibility/cts/run#ctsv2_reference">referência de comando do console CTS v2</a>.</p>
<h4 id="secure_element">Elemento de segurança</h4>
<p>O <a href="/compatibility/cts/secure-element">serviço Elemento de segurança</a> verifica os elementos de segurança compatíveis com a plataforma global, conferindo se os dispositivos têm uma implementação SE HAL e, em caso afirmativo, verificando a quantidade. Ele é usado como a base para testar a API e a implementação do elemento de segurança subjacente.</p>
<h4 id="sensor_fusion_box">Caixa de fusão do sensor</h4>
<p>A Caixa de fusão do sensor é usada no teste CameraITS sensor_fusion e no teste de sincronização de várias câmeras e fornece um ambiente de teste consistente para medir a precisão do carimbo de data e hora da câmera e de outros sensores de smartphones Android. Consulte estas páginas para ver mais informações:</p>
<ul>
<li>O <a href="/compatibility/cts/sensor-fusion-quick-start">Guia de início rápido da caixa de fusão do sensor</a> fornece instruções passo a passo sobre como configurar o teste de Fusão do sensor e da Caixa de fusão do sensor pela primeira vez.</li>
<li>O <a href="/compatibility/cts/sensor-fusion-box-assembly">Conjunto da caixa de fusão do sensor</a> fornece instruções passo a passo para montar uma Caixa de fusão do sensor.</li>
</ul>
<h4 id="wide_field_of_view_its-in-a-box">ITS-in-a-Box de campo de visão amplo</h4>
<p>O <a href="/compatibility/cts/camera-wfov-box-assembly">ITS-in-a-Box de campo de visão amplo</a> é um sistema automatizado projetado para testar sistemas de câmera de campo de visão amplo (WFoV, na sigla em inglês) e de campo de visão normal (RFoV, na sigla em inglês) no Teste de imagem da câmera (ITS, na sigla em inglês).</p>
<h3 id="vendor_test_suite">Teste de fornecedor (VTS, na sigla em inglês)</h3>
<h4 id="host_controller_architecture">Arquitetura do controlador de host</h4>
<p>A <a href="/compatibility/vts/host-controller">Arquitetura de controlador de host do VTS</a> descreve o framework de teste do VTS integrado ao serviço de teste baseado na nuvem.</p>
<h4 id="service_name_aware_hal_testing">Testes de HAL com reconhecimento de nome de serviço</h4>
<p>Os <a href="/compatibility/vts/sna-hal-testing">testes VTS de HAL com reconhecimento de nome de serviço</a> são compatíveis com a aquisição do nome de serviço de uma determinada instância da HAL com base no dispositivo em que os testes do VTS estão sendo executados.</p>
<h4 id="hal_testability_check">Verificação da capacidade de teste de HAL</h4>
<p>A <a href="/compatibility/vts/hal-testability">Verificação VTS da capacidade de teste de HAL</a> inclui um método de tempo de execução para usar a configuração do dispositivo para identificar quais testes de VTS serão ignorados para esse destino de dispositivo.</p>
<h4 id="automated_testing_infrastructure">Infraestrutura de teste automatizada</h4>
<p>A página <a href="/compatibility/vts/automated-test-infra">Infraestrutura de teste automatizada</a> descreve uma nova infraestrutura do VTS para testes automatizados de VTS, CTS ou outros testes em dispositivos parceiros que executam a imagem genérica do sistema (GSI, na sigla em inglês) do AOSP.</p>
<h3 id="debugging">Depuração</h3>
<h4 id="advanced_telemetry">Telemetria avançada</h4>
<p>No Android, a telemetria é o processo de coleta automática de informações de uso e diagnósticos sobre o dispositivo, o sistema Android e os apps. Nas versões anteriores do Android, a pilha de telemetria era limitada e não capturava as informações necessárias para identificar e resolver a confiabilidade do sistema e os problemas de dispositivos ou apps. Isso dificultava, ou até impossibilitava, a identificação das causas-raiz dos problemas.</p>
<p>O Android 9 inclui um novo recurso de telemetria, o <code>statsd</code>, que resolve essa deficiência coletando dados melhores mais rapidamente. O <code>statsd</code> coleta as estatísticas do processo, bateria e uso de apps, assim como as falhas. Os dados são analisados e usados para melhorar produtos, hardware e serviços.</p>
<p>Para ver mais detalhes, consulte <code>frameworks/base/cmds/statsd/</code>.</p>
<h2 id="security_features">Recursos de segurança</h2>
<h3 id="application_signing">Assinatura do aplicativo</h3>
<p>O <a href="/security/apksigning/v3">Esquema de assinatura de APK v3</a> é o novo esquema de assinatura de APK e é compatível com a rotação de chaves de APK.</p>
<h3 id="biometric_support">Compatibilidade biométrica</h3>
<p>O Android 9 inclui uma <a href="https://developer.android.com/preview/features/security#fingerprint-auth" class="external">API BiometricPrompt</a>, que os apps podem usar para integrar a compatibilidade à autenticação biométrica independentemente de dispositivos e modalidades. Para ver mais informações sobre como integrar sua pilha de biometria para incluir o <code>BiometricPrompt</code>, consulte <a href="/security/biometric">Biometria</a>.</p>
<h3 id="dynamic_analysis">Análise dinâmica</h3>
<p>O Android 9 inclui compatibilidade com mais <a href="/devices/tech/debug/fuzz-sanitize">ferramentas de análise e redução de vulnerabilidades</a>.</p>
<h4 id="control_flow_integrity_cfi">Integridade do fluxo de controle (CFI, na sigla em inglês)</h4>
<p>A <a href="/devices/tech/debug/cfi">Integridade do fluxo de controle (CFI)</a> é um mecanismo de segurança que impede alterações no gráfico de fluxo de controle original de um binário compilado, tornando-o significativamente mais resistente a tais ataques.</p>
<h4 id="kernel_cfi">CFI de kernel</h4>
<p>Além do CFI do sistema, que é ativado por padrão, esta versão também inclui compatibilidade com a <a href="/devices/tech/debug/kcfi">Integridade do fluxo de controle do kernel</a>.</p>
<h3 id="encryption">Criptografia</h3>
<h4 id="file-based_encryption">Criptografia baseada em arquivos</h4>
<p><a href="/security/encryption/file-based">A criptografia baseada em arquivos</a> foi atualizada para funcionar com o <a href="/devices/storage/adoptable">armazenamento adotável</a>. Para novos dispositivos, recomendamos o uso de criptografia baseada em arquivos em vez de criptografia de disco completo.</p>
<h4 id="metadata_encryption">Criptografia de metadados</h4>
<p>Esta versão introduz compatibilidade com a <a href="/security/encryption/metadata">criptografia de metadados</a> quando houver compatibilidade de hardware. Com a criptografia de metadados, uma única chave presente no momento da inicialização criptografa qualquer conteúdo que não esteja criptografado pela criptografia baseada em arquivos.</p>
<h3 id="keystore">Armazenamento de chaves</h3>
<p>O Android 9 inclui o <a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/keymaster/4.0/" class="external">Keymaster 4</a>, que apresenta os seguintes recursos:</p>
<h4 id="strongbox">StrongBox</h4>
<p>O Android 9 inclui compatibilidade para chaves do Armazenamento de chaves do Android que são armazenadas e usadas em uma CPU fisicamente separada, criada especificamente para apps de alta segurança, como um <a href="/compatibility/cts/secure-element">Elemento de segurança</a> (SE, na sigla em inglês) incorporado.
O StrongBox Keymaster é uma implementação de Keymaster HAL em hardware seguro discreto. Um StrongBox conta com:</p>
<ul>
<li>CPU discreta;</li>
<li>armazenamento seguro integral;</li>
<li>gerador de número aleatório de alta qualidade;</li>
<li>empacotamento resistente a adulterações;</li>
<li>resistência a canal paralelo.</li>
</ul>
<h4 id="secure_key_import">Importação de chave segura</h4>
<p>Para importar uma chave para o Keymaster 4 com segurança, uma chave criada fora do dispositivo é criptografada com uma especificação das autorizações que definem como a chave pode ser usada.</p>
<h5 id="3des_support">Compatibilidade com 3DES</h5>
<p>O Keymaster 4 inclui o 3DES para compatibilidade com sistemas legados que usam o 3DES.</p>
<h4 id="version_binding">Vinculação de versão</h4>
<p>Para ser compatível com a estrutura modular do Treble e romper a vinculação de <code>system.img</code> com <code>boot.img</code>, o Keymaster 4 alterou o modelo de <a href="/security/keystore/version-binding">vinculação de versão de chave</a> para ter níveis de patch separados para cada partição. Isso permite que cada partição seja atualizada de maneira independente, fornecendo ainda proteção contra reversão.</p>
<h4 id="android_protected_confirmation">Confirmação protegida pelo Android</h4>
<p>Os dispositivos compatíveis lançados com o Android 9 já instalado fornecem aos desenvolvedores a capacidade de usar a <a href="https://developer.android.com/preview/features/security#android-protected-confirmation" class="external">API de confirmação protegida pelo Android</a>. Com essa nova API, os apps podem usar uma instância de <code><a href="https://developer.android.com/reference/android/security/ConfirmationPrompt.html">ConfirmationPrompt</a></code> para exibir uma solicitação ao usuário, pedindo que ele aprove uma breve declaração. Essa declaração permite que um app reafirme que o usuário quer concluir uma transação confidencial, como efetuar um pagamento.</p>
<h3 id="selinux">SELinux</h3>
<h4 id="per-app_selinux_sandbox">Sandbox SELinux por app</h4>
<p>O <a href="/security/app-sandbox">Sandbox de aplicativos</a> tem novas proteções e casos de teste para garantir que todos os apps não privilegiados voltados para o Android 9 ou versões posteriores executem sandboxes SELinux individuais.</p>
<h4 id="treble_selinux_changes">Alterações no SELinux do Treble</h4>
<p>As atualizações no SELinux do Treble desta versão estão documentadas em várias páginas na <a href="/security/selinux">seção SELinux</a>.</p>
<h4 id="vendor_init">Vendor_init</h4>
<p><a href="/security/selinux/vendor-init">Vendor Init</a> descreve as atualizações para fechar o furo de acesso do processo init na divisão sistema/fornecedor do Treble usando um domínio SELinux separado para executar comandos <code>/vendor</code> com permissões específicas do fornecedor.</p>
<h4 id="system_properties">Propriedades do sistema</h4>
<p>O Android 9 restringe as <a href="/security/selinux/compatibility#system-property-and-process-labeling-ownership">propriedades do sistema</a> para que elas não sejam compartilhadas desnecessariamente entre as partições <code>system</code> e <code>vendor</code>, além de fornecer um método para garantir a consistência entre as propriedades do sistema compartilhadas.</p>
<h5 id="selinux_attribute_tests">Testes de atributos do SELinux</h5>
<p>O Android 9 inclui novos <a href="https://android.googlesource.com/platform/system/sepolicy/+/master/tests/sepolicy_tests.py" class="external">testes de tempo de criação</a>, que garantem que todos os arquivos em locais específicos tenham os <a href="/security/selinux/compatibility#compatibility-attributes">atributos apropriados</a>.
Por exemplo, todos os arquivos em <code>sysfs</code> têm o atributo <code>sysfs_type</code> obrigatório.</p>
<h2 id="audio">Áudio</h2>
<h3 id="high-resolution_audio_effects">Efeitos de áudio de alta resolução</h3>
<p>As atualizações dos <a href="/devices/audio/highres-effects">efeitos de áudio de alta resolução</a> incluem a conversão do processamento de efeitos do int16 para o formato float e o aumento das faixas de saída simultâneas do cliente, da memória máxima do cliente/servidor e do total de faixas mistas.</p>
<h2 id="camera">Câmera</h2>
<h3 id="external_usb_cameras">Câmeras USB externas</h3>
<p>Esta versão é compatível com o uso de <a href="/devices/camera/external-usb-cameras">câmeras USB plug and play</a> (ou seja, webcams) usando a API Android Camera2 padrão e a interface HIDL da câmera.</p>
<h3 id="motion_tracking">Registro de movimento</h3>
<p>Os dispositivos da câmera podem <a href="/devices/camera/motion-tracking">anunciar o recurso de registro de movimento</a>.</p>
<h3 id="multi-camera_support">Compatibilidade com várias câmeras</h3>
<p>A <a href="/devices/camera/multi-camera">compatibilidade com várias câmeras</a> inclui compatibilidade com a API para dispositivos com várias delas por meio de um novo dispositivo de câmera lógica composto por dois ou mais dispositivos de câmera física apontando para a mesma direção.</p>
<h3 id="session_parameters">Parâmetros de sessão</h3>
<p>A <a href="/devices/camera/session-parameters">implementação de parâmetros de sessão</a> pode reduzir os atrasos ao permitir que os clientes da câmera configurem ativamente um subconjunto de parâmetros de solicitação dispendiosos como parte da fase de inicialização da sessão de captura.</p>
<h3 id="single_producer_multiple_consumer_buffer">Produtor único, buffer de vários consumidores</h3>
<p>O <a href="/devices/camera/singleprod-multiconsum">transporte do buffer da câmera de vários consumidores com produtor único</a> é um novo conjunto de métodos que permite que os clientes da câmera incluam e removam superfícies de saída dinamicamente enquanto a sessão de captura está ativa e o streaming da câmera está em andamento.</p>
<h2 id="connectivity">Conectividade</h2>
<h3 id="calling_and_messaging">Chamadas e mensagens</h3>
<h4 id="implementing_data_plans">Implementação de planos de dados</h4>
<p>Esta versão oferece compatibilidade aprimorada com <a href="/devices/tech/connect/data-plans">planos de dados implementados</a> pelas operadoras usando as APIs <code>SubcriptionPlan</code>.</p>
<h4 id="third-party_calling_apps">Apps de chamadas de terceiros</h4>
<p>Esta versão fornece APIs que permitem que <a href="/devices/tech/connect/third-party-call-apps">apps de chamadas de terceiros</a> lidem com as chamadas simultâneas recebidas da operadora e registrem chamadas no sistema.</p>
<h3 id="carrier">Operadora</h3>
<h4 id="carrier_identification">Identificação da operadora</h4>
<p>No Android 9, o AOSP inclui um banco de dados de código de operadoras para ajudar na <a href="/devices/tech/config/carrierid">identificação delas</a>. O banco de dados minimiza a lógica duplicada e as experiências de apps fragmentados, oferecendo uma maneira comum de identificar as operadoras.</p>
<h4 id="esim">eSIM</h4>
<p>O chip incorporado (eSIM ou eUICC) é a mais recente tecnologia para permitir que usuários de dispositivos móveis façam o download de um perfil de operadora e ativem o serviço dela sem precisar de um chip físico. Nesta versão, o framework do Android fornece APIs padrão para acessar o eSIM e gerenciar os perfis de assinatura dele. Para ver mais informações, consulte:</p>
<ul>
<li><a href="/devices/tech/connect/esim-overview">Como implementar o eSIM</a></li>
<li><a href="/devices/tech/connect/esim-modem-requirements">Requisitos de modem</a></li>
<li><a href="/devices/tech/connect/esim-euicc-api">APIs de eUICC</a></li>
</ul>
<h4 id="multi-sim_support_for_ims_settings">Compatibilidade com vários chips para configurações de IMS</h4>
<p>Esta versão fornece melhorias nas configurações do usuário para <a href="/devices/tech/connect/ims">IMS</a>. Os usuários podem configurar chamadas de Voz por LTE (VoLTE), videochamadas e chamadas no Wi-Fi em cada assinatura, em vez de compartilhar essas configurações em todas as assinaturas.</p>
<h4 id="sim_state_broadcasts">Transmissões do estado do chip</h4>
<p>Nesta versão, o uso de <code>Intent.ACTION_SIM_STATE_CHANGED</code> foi suspenso, e duas transmissões separadas para estado de cartão e estado de app do cartão foram adicionadas: <code>TelephonyManager.ACTION_SIM_CARD_STATE_CHANGED</code> e
<code>TelephonyManager.ACTION_SIM_APPLICATION_STATE_CHANGED</code>.</p>
<p>Com essa mudança, os receptores que só precisam saber se um cartão está presente não precisam mais ouvir as alterações de estado do app, e os receptores que só precisam saber se os apps do cartão estão prontos não precisam ouvir as alterações no estado do cartão.</p>
<p>As duas novas transmissões são @SystemApis e não são fixas. Apenas receptores com a permissão <code>READ_PRIVILEGED_PHONE_STATE</code> podem receber as transmissões.</p>
<p>Os intents não são retransmitidos quando o usuário desbloqueia o dispositivo. Receptores que dependem de transmissões enviadas antes do desbloqueio do usuário precisam ser <code>directBootAware</code> ou precisam consultar o estado após o desbloqueio do usuário. Os estados podem ser consultados usando as APIs correspondentes no TelephonyManager: <code>getSimCardState()</code> e <code>getSimApplicationState()</code>.</p>
<h3 id="wi-fi">Wi-Fi</h3>
<h4 id="carrier_wi-fi">Wi-Fi da operadora</h4>
<p>O <a href="/devices/tech/connect/carrier-wifi">Wi-Fi da operadora</a> permite que os dispositivos se conectem automaticamente às redes Wi-Fi implementadas pela operadora. Em áreas de alto congestionamento ou com cobertura celular mínima, como um estádio ou uma estação de trem subterrânea, o Wi-Fi da operadora pode ser usado para melhorar a experiência de conectividade dos usuários e descarregar o tráfego.</p>
<h4 id="mac_randomization">Escolha aleatória de MAC</h4>
<p>A <a href="/devices/tech/connect/wifi-mac-randomization">escolha aleatória de MAC</a> permite que os dispositivos usem endereços MAC aleatórios ao sondar por novas redes enquanto não estão associados a uma rede naquele momento. Nesta versão, uma opção do desenvolvedor pode ser ativada para fazer com que um dispositivo use um endereço MAC aleatório ao se conectar a uma rede Wi-Fi.</p>
<h4 id="turn_on_wi-fi_automatically">Ativar o Wi‑Fi automaticamente</h4>
<p><a href="/devices/tech/connect/wifi-infrastructure#turn_on_wi-fi_automatically">Ativar o Wi-Fi automaticamente</a> permite que os usuários reativem automaticamente o Wi-Fi sempre que o dispositivo estiver perto de uma rede que tenha sido salva e que tenha um indicador de intensidade de sinal recebido (RSSI, na sigla em inglês) suficientemente alto.</p>
<h4 id="wi-fi_round_trip_time_rtt">Tempo de retorno do Wi-Fi (RTT, na sigla em inglês)</h4>
<p>O <a href="/devices/tech/connect/wifi-rtt">tempo de retorno do Wi-Fi (RTT)</a> permite que os dispositivos meçam a distância até outros dispositivos compatíveis, sejam eles pontos de acesso (APs, na sigla em inglês) ou outros pontos Wi-Fi Aware (se o Wi-Fi Aware for compatível com o dispositivo). Esse recurso, criado com base no protocolo IEEE 802.11mc, permite que os apps usem a precisão e o reconhecimento de local aprimorados.</p>
<h4 id="wi-fi_scoring_improvements">Melhorias na classificação de Wi-Fi</h4>
<p>Os modelos de classificação de Wi-Fi aprimorados determinam com rapidez e precisão quando um dispositivo precisa sair de uma rede Wi-Fi conectada ou se conectar a uma nova rede. Esses modelos oferecem uma experiência confiável e contínua para os usuários, evitando falhas na conectividade.</p>
<p>Analise e ajuste os valores de RSSI nos recursos de config.xml, especialmente os seguintes:</p>
<ul>
<li><code>config_wifi_framework_wifi_score_bad_rssi_threshold_5GHz</code></li>
<li><code>config_wifi_framework_wifi_score_entry_rssi_threshold_5GHz</code></li>
<li><code>config_wifi_framework_wifi_score_bad_rssi_threshold_24GHz</code></li>
<li><code>config_wifi_framework_wifi_score_entry_rssi_threshold_24GHz</code></li>
</ul>
<aside class="note"><strong>Observação</strong>: <span>os valores de "entrada" foram introduzidos no Android 8.1, e os padrões foram escolhidos para corresponder aos padrões dos limites "ruins" para compatibilidade.
O ideal é que o limite de entrada seja pelo menos 3 dB acima do limite de saída correspondente ("ruim").</span></aside>
<h4 id="wi-fi_staap_concurrency">Simultaneidade de STA/AP Wi-Fi</h4>
<p>A <a href="/devices/tech/connect/wifi-sta-ap-concurrency">simultaneidade de STA/AP Wi-Fi</a> é a capacidade dos dispositivos de operarem nos modos Estação (STA) e Ponto de acesso (AP) simultaneamente. Para dispositivos compatíveis com Dual Band Simultaneous (DBS), esse recurso traz novas funcionalidades, como não interromper o Wi-Fi STA quando um usuário quiser ativar um ponto de acesso (softAP).</p>
<h4 id="wifistatemachine_improvements">Melhorias no WiFiStateMachine</h4>
<p><code>WifiStateMachine</code> é a principal classe usada para controlar a atividade de Wi-Fi, coordenar a entrada do usuário (modo de operação: ponto de acesso, busca, conexão ou desativação) e controlar as ações da rede Wi-Fi (por exemplo, busca e conexão).</p>
<p>Nesta versão, o código do framework de Wi-Fi e a implementação de <code>WifiStateMachine</code> foram reprojetados, levando a um tamanho de código reduzido, uma lógica de controle de Wi-Fi mais fácil de seguir, granularidade de controle aprimorada e maior cobertura e qualidade de testes de unidade.</p>
<p>Em um nível elevado, o <code>WifiStateMachine</code> permite que o Wi-Fi esteja em um destes quatro estados:</p>
<ol>
<li>Modo de cliente (pode conectar e buscar)</li>
<li>Modo somente busca</li>
<li>Modo SoftAP (ponto de acesso Wi-Fi)</li>
<li>Desativado (Wi-Fi totalmente desativado)</li>
</ol>
<p>Cada modo de Wi-Fi tem requisitos diferentes para a execução de serviços e precisa ser configurado de maneira consistente, lidando apenas com os eventos relevantes para a operação. A nova implementação restringe o código a eventos relacionados ao modo, reduzindo o tempo de depuração e o risco de introduzir novos bugs devido à complexidade. Além do tratamento explícito da funcionalidade de modo, o gerenciamento de threads é tratado de maneira consistente, e o uso de canais assíncronos é eliminado como um mecanismo de sincronização.</p>
<h4 id="wi-fi_permission_updates">Atualizações de permissão de Wi-Fi</h4>
<p>A partir desta versão, a permissão do app <code>CHANGE_WIFI_STATE</code> é verificada dinamicamente e pode ser desativada pelo usuário. O usuário pode desativar a permissão para qualquer app por meio da página de configurações especiais em <strong>Config. &gt; Apps e notificações&gt; Acesso especial a apps &gt; Controle de Wi-Fi</strong>.</p>
<p>Os apps precisam conseguir lidar com casos em que a permissão <code>CHANGE_WIFI_STATE</code> não é concedida.</p>
<p>Para validar esse comportamento, execute os testes roboelétricos e manuais.</p>
<p>Execute os testes roboelétricos em:
<a href="https://android.googlesource.com/platform/packages/apps/Settings/+/master/tests/robotests/src/com/android/settings/wifi/" class="external">/packages/apps/Settings/tests/robotests/src/com/android/settings/wifi/AppStateChangeWifiStateBridgeTest.java</a> </p>
<p>Para testes manuais:</p>
<ol>
<li>Acesse Config. &gt; Apps e notificações&gt; Acesso especial a apps &gt; Controle de Wi-Fi.</li>
<li>Selecione e desative a permissão para seu app.</li>
<li>Verifique se seu app pode lidar com o cenário em que a permissão <code>CHANGE_WIFI_STATE</code> não é concedida.</li>
</ol>
<h4 id="wps_deprecation">Suspensão do uso de WPS</h4>
<p>Devido a problemas de segurança, o uso do Wi-Fi Protected Setup (WPS) em <code>WiFiManager</code> foi suspenso e desativado nesta versão. No entanto, o <code>WiFiDirect</code> ainda usa o WPS no suplicante de WPA.</p>
<h2 id="graphics">Gráficos</h2>
<h3 id="implementation">Implementação</h3>
<h4 id="vulkan_11_api">API Vulkan 1.1</h4>
<p>Esta versão é compatível com a implementação da <a href="/devices/graphics/implement-vulkan">API Vulkan 1.1</a>.</p>
<h4 id="winscope_tool_for_window_transition_tracing">Ferramenta WinScope para rastreamento de transição de janela</h4>
<p>Esta versão introduz a ferramenta WinScope para rastrear transições de janela.
O WinScope fornece a infraestrutura e as ferramentas para registrar e analisar o estado do gerenciador de janelas durante e após as transições. Ele permite gravar e percorrer as transições de janela, enquanto grava todo o estado do gerenciador pertinente em um arquivo de rastreamento. Você pode usar esses dados para reproduzir e percorrer a transição.</p>
<p>O código-fonte da ferramenta WinScope está localizado em <code>platform/development/tools/winscope</code>.</p>
<h2 id="interaction">Interação</h2>
<h3 id="automotive_audio">Áudio automotivo</h3>
<p>A seção <a href="/devices/automotive/audio">Áudio automotivo</a> descreve a arquitetura de áudio para implementações Android relacionadas a automóveis.</p>
<p>A HAL de <a href="/devices/interaction/neural-networks">Redes neurais</a> (NN, na sigla em inglês) define uma abstração dos vários aceleradores. Os drivers para esses aceleradores precisam estar em conformidade com essa HAL.</p>
<h3 id="vehicle_hal">HAL veicular</h3>
<p><a href="/devices/automotive/properties">Propriedades do veículo</a> descreve as alterações na interface HAL do veículo.</p>
<h3 id="gnss_satellite_selection">Seleção de satélite GNSS</h3>
<p>O Android Framework monitora as configurações do Android ao trabalhar com as novas HALs do Sistema global de navegação por satélite (GNSS, na sigla em inglês) (v1.1 ou posterior). Os parceiros podem alterar as configurações do Google Play Services ou outras atualizações do sistema. Essas configurações dizem à HAL do GNSS se determinados satélites não podem ser usados. Isso pode ser útil em caso de erros persistentes de satélites GNSS ou de constelação, ou para reagir mais rapidamente a problemas de implementação da HAL GNSS, que podem ocorrer ao misturar constelações usando diferentes sistemas de tempo e eventos externos, como segundo bissexto e/ou rollovers do número da semana ou do dia.</p>
<h3 id="gnss_hardware_model">Modelo de hardware de GNSS</h3>
<p>No Android 9, a HAL de GNSS versão 1.1 ou posterior pode passar informações sobre a API de hardware para a plataforma. A plataforma precisa implementar a interface <code>IGnssCallback</code> e transmitir um identificador para a HAL. A HAL de GNSS transmite as informações do modelo de hardware por meio da API <a href="https://developer.android.com/reference/android/location/LocationManager#getGnssHardwareModelName()" class="external"><code>LocationManager#getGnssHardwareModelName()</code></a>. Os fabricantes de dispositivos precisam trabalhar junto aos provedores de HAL GNSS para fornecerem essas informações sempre que possível.</p>
<h2 id="permissions">Permissões</h2>
<h3 id="configuring_discretionary_access_control_dac_updates">Atualizações de configuração de controle de acesso discricionário (DAC, na sigla em inglês)</h3>
<p>A <a href="/devices/tech/config/filesystem">configuração de controle de acesso discricionário (DAC)</a> contém atualizações para o mecanismo de códigos do Android para ampliar as funcionalidades do sistema de arquivos.</p>
<h3 id="update_on_the_privileged_apps_permissions_whitelisting">Atualização da autorização de permissões dos apps privilegiados</h3>
<p>A partir do Android 9, se houver permissões que precisem ser negadas, edite o XML para usar uma tag <code>deny-permission</code> em vez de uma <code>permission</code>, como foi usado em versões anteriores.</p>
<h2 id="data">Dados</h2>
<h3 id="bandwidth_estimation_improvements">Melhorias na estimativa de largura de banda</h3>
<p>O Android 9 oferece melhor compatibilidade para a estimativa de largura de banda. Apps Android podem tomar decisões melhores sobre a resolução a ser usada para videochamadas e streaming de vídeo se reconhecerem a largura de banda de dados disponível.</p>
<p>Em dispositivos que executam o Android 6.0 e versões posteriores, um autor de chamada que queira uma estimativa de largura de banda para uma rede celular chama <a href="https://developer.android.com/reference/android/net/ConnectivityManager.html#requestBandwidthUpdate(android.net.Network)" class="external"><code>ConnectivityManager.requestBandwidthUpdate()</code></a>, e o framework <em>pode</em> fornecer uma largura de banda estimada de downlink.</p>
<p>Contudo, em dispositivos que executam a versão 9 ou posterior, o callback <a href="https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback.html#onCapabilitiesChanged(android.net.Network,%20android.net.NetworkCapabilities)" class="external"><code>onNetworkCapabilitiesChanged()</code></a> é disparado automaticamente quando há uma alteração significativa na largura de banda estimada, e chamar <code>requestBandwidthUpdate()</code> não traz nenhum benefício. Os <a href="https://developer.android.com/reference/android/net/NetworkCapabilities#getlinkdownstreambandwidthkbps" class="external"><code>getLinkDownstreamBandwidthKbps()</code></a> e <a href="https://developer.android.com/reference/android/net/NetworkCapabilities#getlinkupstreambandwidthkbps" class="external"><code>getLinkUpstreamBandwidthKbps()</code></a> associados são preenchidos com informações atualizadas fornecidas pela camada física.</p>
<p>Além disso, os dispositivos podem verificar as larguras de banda da rede LTE via <a href="https://developer.android.com/reference/android/telephony/ServiceState#getcellbandwidths" class="external"><code>ServiceState.getCellBandwidths()</code></a>.
Isso permite que os apps saibam exatamente quanto de largura de banda (frequência) está disponível em uma determinada rede. As informações de largura de banda da rede celular estão disponíveis por meio de um menu oculto para que os testadores de campo possam verificar as informações mais atuais.</p>
<h3 id="ebpf_traffic_monitoring">Monitoramento de tráfego eBPF</h3>
<p>A <a href="/devices/tech/datausage/ebpf-traffic-monitor">ferramenta de tráfego de rede eBPF</a> usa uma combinação de kernel e implementação de espaço do usuário para monitorar o uso da rede no dispositivo desde a última inicialização do aparelho. Ela fornece outras funcionalidades, como inclusão de tag em soquetes, separação de tráfego em primeiro e segundo plano e firewall por UID para impedir que apps acessem a rede, dependendo do estado do dispositivo.</p>
<h3 id="restore_to_lower_apis">Restaurar para APIs anteriores</h3>
<p>Os dispositivos agora podem realizar restaurações de versões futuras do sistema operacional. Isso é especialmente útil quando os usuários fazem upgrade dos smartphones, mas depois os perdem ou quebram.</p>
<p>Se um OEM modificar os agentes de backup para qualquer pacote do sistema (android, sistema, configurações), esses agentes precisarão gerenciar a restauração de conjuntos de backups feitos em versões posteriores da plataforma sem apresentar falhas e com a restauração de pelo menos alguns dados.</p>
<p>Considere usar um validador para verificar valores inválidos de uma determinada parte dos dados de backup e apenas restaurar dados válidos, como feito em <code>core/java/android/provider/SettingsValidators.java</code>.</p>
<p>Esse recurso está ativado por padrão. A compatibilidade do SettingsBackupAgent com a restauração de versões futuras pode ser desativada via <code>Settings.Global.OVERRIDE_SETTINGS_PROVIDER_RESTORE_ANY_VERSION</code>. Nenhuma outra implementação é necessária, a menos que o fabricante do dispositivo estenda um dos agentes de backup incluídos na ROM (ou adicione um personalizado).</p>
<p>Esse recurso permite realizar restaurações do sistema de versões futuras da plataforma, mas é esperado que os dados restaurados não estejam completos. As instruções a seguir se aplicam aos seguintes agentes de backup:</p>
<ul>
<li><p><strong>PackageManagerBackupAgent</strong>: é compatível com versões futuras dos dados de backup via controle de versão de formato. Essas extensões PRECISAM ser compatíveis com o código de restauração atual ou seguir as instruções da classe, o que inclui o aumento das constantes adequadas.</p></li>
<li><p><strong>SystemBackupAgent</strong>: <code>restoreAnyVersion = false</code> no Android, esta versão e posteriores. Não é compatível com restauração de versões posteriores da API.</p></li>
<li><p><strong>SettingsBackupAgent</strong>: <code>restoreAnyVersion = true</code> a partir desta versão.
Há compatibilidade parcial por meio de validadores. Uma configuração pode ser restaurada a partir de uma versão posterior de API se um validador para ela existir no SO de destino. A inclusão de qualquer configuração precisa ser acompanhada pelo próprio validador. Confira a classe para ver mais detalhes.</p></li>
<li><p>Qualquer <strong>agente de backup personalizado</strong> incluído na ROM precisa aumentar o código de versão sempre que uma alteração incompatível for feita no formato de dados de backup e garantir <code>restoreAnyVersion = false</code> (o padrão) se o agente não estiver preparado para lidar com dados de backup de uma versão futura do código.</p></li>
</ul>
<h2 id="enterprise">Empresa</h2>
<h3 id="managed_profile_improvements">Melhorias de perfil gerenciado</h3>
<p>As alterações de UX do <a href="/devices/tech/admin/managed-profiles">perfil gerenciado</a> fazem com que seja mais fácil para os usuários identificar, acessar e controlar o perfil gerenciado.</p>
<h3 id="pause_otas">Pausar OTAs</h3>
<p>Um novo @SystemApi permite que os proprietários de dispositivos <a href="/devices/tech/admin/ota-updates">pausem indefinidamente as atualizações OTA</a>, incluindo atualizações de segurança.</p>
<h2 id="performance">Desempenho</h2>
<h3 id="health_20">Health 2.0</h3>
<p>Esta versão inclui a HAL android.hardware.health 2.0, uma atualização importante da versão da HAL health@1.0. Para ver mais informações, consulte estas páginas:</p>
<ul>
<li><a href="/devices/tech/health/">Health</a></li>
<li><a href="/devices/tech/health/implementation">Implementação do Health</a></li>
<li><a href="/devices/tech/health/deprecation">Suspensão de uso do health@1.0</a></li>
</ul>
<h3 id="apk_caching">Armazenamento em cache de APK</h3>
<p>O Android 9 inclui uma solução de <a href="/devices/tech/perf/apk-caching">armazenamento em cache de APK</a> para instalação rápida de apps pré-carregados em um dispositivo compatível com partições A/B. Os OEMs podem alocar pré-carregamentos e os apps favoritos no cache do APK armazenado na partição B, que normalmente fica vazia, em novos dispositivos com particionamento A/B, sem afetar o espaço de dados do usuário.</p>
<h3 id="profile_guided_optimization_pgo">Otimização guiada pelo perfil (PGO, na sigla em inglês)</h3>
<p>Esta versão é compatível com o uso da <a href="/devices/tech/perf/pgo">otimização guiada por perfil</a> (PGO) do Clang em módulos Android nativos que têm regras de criação de diagramas.</p>
<h3 id="write-ahead_logging">Registro de gravação antecipada</h3>
<p><a href="/devices/tech/perf/compatibility-wal">Registro de gravação antecipada (WAL, na sigla em inglês) de compatibilidade para apps</a> é um novo modo especial de SQLiteDatabase chamado de WAL de compatibilidade que permite que um banco de dados use <code>journal_mode=WAL</code> e preserve o comportamento de manter no máximo uma conexão por banco de dados.</p>
<h3 id="boot_times">Tempos de inicialização</h3>
<p>A <a href="/devices/tech/perf/boot-times">Otimização dos tempos de inicialização</a> descreve as alterações na otimização do tempo de inicialização.</p>
<h2 id="power">Energia</h2>
<h3 id="background_restrictions">Restrições de segundo plano</h3>
<p>O Android 9 introduz as <a href="/devices/tech/power/app_mgmt">Restrições de segundo plano</a>, que permitem aos usuários restringir apps que possam estar drenando a energia da bateria do dispositivo.
O sistema também pode sugerir que apps que demonstraram estar afetando negativamente a integridade do dispositivo sejam desativados.</p>
<h3 id="batteryless_devices">Dispositivos sem bateria</h3>
<p>O Android 9 lida de forma mais elegante com <a href="/devices/tech/power/batteryless">dispositivos sem bateria</a> do que as versões anteriores.
Ele remove parte do código anterior para dispositivos sem bateria que, por padrão, fingiam que uma bateria estava presente, estava sendo carregada em 100% e apresentava boa integridade, com uma leitura normal de temperatura no termistor.</p>
</body></html>