Comunidade

Now in Android 121

Leitura de 9 minutos
Daniel Galpin
Developer Advocate

Este é o Now in Android, seu guia contínuo sobre as novidades e os destaques do mundo do desenvolvimento Android.

Leia sobre a versão Beta 1 do Android 16 QPR2, o lançamento de recursos do Android Studio Narwhal, o Jetpack Compose 1.9, o Media 3 1.8, a transformação de formas e o preenchimento automático no Compose, entre outros.

Você pode assistir um resumo em vídeo:

 

 

Também temos um podcast.

Mas esta postagem tem as informações mais detalhadas. Então, continue lendo!

Chegou a versão Beta 1 do QPR2 do Android 16 ✨

A primeira versão Beta do Android 16 QPR2 já está disponível. Essa é a primeira versão do Android com uma versão secundária do SDK do Android. As versões secundárias do SDK podem incluir novas APIs que estendem os recursos da plataforma, mas não podem introduzir mudanças de comportamento targetSdkVersion controladas, minimizando a quantidade de testes necessários para seus apps.

sdk-release-graph.webp

É possível chamar novas APIs verificando SDK_INT_FULL na enumeração VERSION_CODES_FULL:

  if (Build.VERSION.SDK_INT_FULL >= Build.VERSION_CODES_FULL.BAKLAVA_1) {
  // Call new APIs from the Android 16 QPR2 release
}

VERSION_CODES_FULL não pode ser usado em atributos de manifesto uses-sdk.

Confira algumas atualizações importantes do QPR2 Beta 1.

Interface, experiência do sistema e acessibilidade:

  • Uma opção de tema escuro estendido inverte de forma inteligente os apps claros para usuários que preferem uma aparência escura.
  • Os ícones de apps com tema automático podem ser gerados pelo sistema se o app não fornecer uma camada monocromática.
  • As sessões interativas do seletor mantêm a interface do app ativa enquanto a caixa de diálogo de compartilhamento está aberta, usando ChooserManager e ChooserSession.
  • Uma nova API Data Transfer permite uma migração de dados mais confiável e segura entre Android e iOS, exigindo atualizações no XML das regras de extração de dados do app e na implementação do BackupAgent.
  • O pacote android.graphics.pdf foi expandido para oferecer suporte à anotação e edição de documentos PDF usando PdfRenderer.Page.
  • Os valores de ViewConfiguration agora são personalizados para dispositivos virtuais individuais. Migre para ViewConfiguration.get(context) em cenários de várias telas.
  • Você ganha um controle mais granular do retorno tátil ao especificar VibrationAttributes com View.performHapticFeedback(HapticFeedbackRequest)
  • Agora, os blocos das Configurações rápidas podem ser atribuídos a categorias predefinidas no arquivo AndroidManifest.xml.

Mídia e áudio:

  • Decodificação de software para o modelo e formatos de áudio imersivo (IAMF, na sigla em inglês), um formato de áudio espacial aberto.
  • O Compartilhamento de áudio pessoal para dispositivos Bluetooth LE Audio é integrado diretamente ao seletor de saída do sistema.
  • Os usuários podem controlar o brilho do HDR usando um controle deslizante de brilho HDR/SDR
  • Os extras do seletor de fotos podem destacar álbuns ou consultas de pesquisa específicas.

Conectividade:

  • Com as melhorias no gerenciamento de dispositivos complementares (CDM, na sigla em inglês), é possível fornecer ícones de dispositivos personalizados, ouvir o callback EVENT_ASSOCIATION_REMOVED e ativar a verificação entre apps usando o DeviceId.
  • As atualizações do Bluetooth incluem suporte à busca passiva para BluetoothLeScanner (ScanSettings.SCAN_TYPE_PASSIVE), motivos de perda de vinculação (BluetoothDevice.EXTRA_BOND_LOSS_REASON) e recuperação direta de UUIDs de serviço (BluetoothDevice.EXTRA_UUID_LE).
  • As atualizações de definição de alcance RTT de Wi-Fi (RttStationRangingParams) oferecem suporte à definição de alcance em relação a estações.
  • Um novo PhoneNumberManager está disponível para analisar e validar números de telefone dos cabeçalhos P-Associated-URI do IMS.
  • As melhorias na privacidade da rede do MediaRouter permitem a transmissão por novas mídias, como Bluetooth e UWB. Use o seletor de saída do sistema ou solicite permissões NEARBY_DEVICES para seletores personalizados no app.

Privacidade e segurança:

  • Um novo estado de segurança no nível do sistema, o bloqueio seguro do dispositivo, bloqueia os dispositivos e exige autenticação principal para desbloquear.
  • Um botão de alternância voltado ao usuário é adicionado para a proteção contra roubo de smartphone, permitindo ativar/desativar o "Bloqueio por falha na autenticação".

Produtividade do desenvolvedor:

  • As novas APIs AppWidgetManager permitem consultar métricas de engajamento de widgets.
  • Os apps depuráveis instalados via ADB agora vão receber alertas antecipados sobre a compatibilidade com o tamanho de página de 16 KB.
  • O ProfilingManager adiciona suporte a novos gatilhos de criação de perfil iniciados pelo sistema e requestRunningSystemTrace para capturar rastreamentos em segundo plano.
  • Uma opção "Registro detalhado de impressão" nas Opções do desenvolvedor fornece mais informações de depuração para o framework de impressão do Android.
  • Testes mais robustos para experiências em computadores e com várias telas são ativados com novas APIs UiAutomation para capturas de tela em telas não padrão e AccessibilityWindowInfo.refresh públicas.
  • O suporte à API foi adicionado para a nova biblioteca androidx.core:core-backported-fixes.
  • Agora há suporte para apps de GUI no terminal Linux
  • O WindowInspector.addGlobalWindowViewsListener é compatível com notificações de mudança da visualização raiz em tempo real.

Você pode registrar qualquer dispositivo Pixel compatível para receber atualizações Beta OTA ou usar imagens do sistema de 64 bits com o Android Emulator no Android Studio. A Estabilidade da plataforma está prevista para outubro de 2025.

A atualização de recursos do Android Studio Narwhal está estável. Comece a usar o Modo Agente 🐳

narwhal.webp

A atualização de recursos do Android Studio Narwhal agora está estável. Os novos recursos e melhorias incluem:

  • O Modo Agente do Gemini no Android Studio está disponível para tarefas de programação em várias etapas
  • A Biblioteca de comandos Regras personaliza a saída de IA do Gemini para as necessidades do seu projeto.
  • O Transform UI com o Gemini usa a interface de linguagem natural para iterar na interface do Compose.
  • Suporte ao desenvolvimento imersivo com o Android Emulator de XR incorporado, um novo modelo de XR e o Layout Inspector incorporado para XR
  • Acesso expandido a dispositivos via laboratórios de dispositivos parceiros do Android no espelhamento de dispositivos Android.
  • Melhores visualizações do Compose com navegação de código aprimorada e o novo seletor de visualização do Compose
  • O compilador K2 Kotlin é ativado por padrão para um desempenho de build mais rápido.
  • Ferramentas de tamanho de página de 16 KB com avisos, análises e um emulador do lint para ajudar você a se preparar para os próximos dispositivos com tamanho de página de 16 KB.

Streaming de dispositivos Android com tecnologia do Firebase

device-streaming.webp

O Streaming de dispositivos Android, com tecnologia Firebase, lançou suporte estável para os laboratórios de dispositivos parceiros do Android, permitindo que você se conecte remotamente a dispositivos Android físicos hospedados por parceiros OEM, incluindo Samsung, Xiaomi, OPPO, OnePlus e vivo.

Acelere o desenvolvimento com lançamentos mensais do Android Studio, que agora são duas vezes mais frequentes do que antes

accelarating-releases.webp

O Android Studio está passando para uma cadência de lançamento estável mensal para acelerar a disponibilização de novos recursos e correções de bugs críticos. Embora o IDE do Android Studio seja atualizado mensalmente, novas versões da plataforma IntelliJ serão lançadas a cada poucos meses, com os Feature Drops preenchendo os lançamentos estáveis provisórios. O Android Emulator e o Plug-in do Android para Gradle vão continuar sendo atualizados separadamente a cada dois meses. Esse cronograma de lançamento acelerado é possível graças aos investimentos de longo prazo em infraestrutura de teste.

Novidades da versão de agosto de 2025 do Jetpack Compose 🚀

jetpack-compose.webp

A versão de agosto de 2025 do Jetpack Compose (versão 1.9) agora está estável. Esta versão apresenta Modifier.dropShadow e Modifier.innerShadow para renderizar efeitos de caixa de sombra. Os novos modificadores onVisibilityChanged e onFirstVisible permitem rastrear a visibilidade de elementos para atualizações da interface ou registro de impressões. É possível aplicar estilos avançados em OutputTransformation usando TextFieldBuffer.addStyle para transformações de texto.

Os blocos de construção LazyLayout agora estão estáveis, e você pode definir um LazyLayoutCacheWindow para melhorar o desempenho da lista e da grade de carregamento lento com pré-busca aprimorada. Scrollable2D permite a rolagem bidimensional, incluindo rolagem rápida e aninhada, com várias melhorias para a interoperabilidade de rolagem e rolagem aninhada com Views. Uma API de ativação (Composer.setDiagnosticStackTraceEnabled) fornece detalhes mais completos sobre o local da falha em stack traces, recomendada apenas para builds de depuração. Novas anotações @RememberInComposition e @FrequentlyChangingValue, além de verificações de Lint associadas, estão disponíveis em uma nova biblioteca de anotações de tempo de execução. Os menus de contexto podem ser personalizados usando Modifier.appendTextContextMenuComponents e Modifier.filterTextContextMenuComponents. Agora é necessário usar o Plug-in do Android para Gradle (AGP) / Lint versão 8.8.2 ou mais recente.

Media3 1.8.0: novidades 🚀

media3.webp

O Media3 1.8.0 já está disponível com vários novos recursos e melhorias. O ExoPlayer ganha um modo de limpeza para buscas frequentes e controladas pelo usuário, que pode ser ativado em ExoPlayer.setScrubbingModeEnabled. O HlsInterstitialsAdsLoader agora é compatível com transmissões ao vivo para inserção de anúncios guiada pelo servidor.

O MetadataRetriever foi atualizado para permitir que você recupere as durações dos itens de mídia sem reprodução. Para o Transformer, a versão apresenta operações de corte mais rápidas usando listas de edição MP4 com experimentalSetMp4EditListTrimEnabled e otimizações de codificador específicas do chipset via CodecDbLite, ativadas chamando setEnableCodecDbLite em DefaultEncoderFactory.Builder.

Outras atualizações incluem suporte para download parcial em Downloader com PreCacheHelper, roteamento automático de áudio XR no ExoPlayer e interações mais eficientes do MediaCodec. Por padrão, o módulo MediaSession agora mantém as notificações visíveis por mais tempo, e o app de demonstração da sessão de mídia mostra a funcionalidade de retomada da reprodução. Um novo app de demonstração de composição, criado com Kotlin e Compose, demonstra a edição avançada de vídeo com vários recursos.

Artigos 📚

#WeArePlay: conheça as pessoas que estão programando um mundo mais sustentável

weareplay.webp

A iniciativa #WeArePlay destaca apps Android e jogos que abordam desafios ambientais. O jogo BoRa — Parque Nacional do Iguaçu, desenvolvido por Mayla, Flávia, Andréia e Ariane, oferece experiências interativas gamificadas e acessíveis para educação ambiental durante as visitas ao parque. O app CyberTracker, de Louis e Justin, permite que rastreadores indígenas não alfabetizados registrem dados de biodiversidade em uma interface baseada em ícones, apoiando os esforços de conservação. Por fim, a Earth5R, cofundada por Bharati e Saurabh, oferece educação ambiental e conecta usuários a estágios e projetos para desenvolver habilidades para a economia verde.

O que é HDR? 🌟

hdr.webp

O High Dynamic Range (HDR) permite aumentar o brilho máximo além do Standard Dynamic Range (SDR) para desenvolvedores Android, oferecendo fidelidade visual aprimorada. O Android oferece suporte a HDR para vídeos e imagens, incluindo tecnologias como UltraHDR para compatibilidade com versões anteriores.

Entender a cor envolve três componentes:

  • Profundidade de bits:define a precisão da representação de cores. Quanto maior a profundidade, mais suaves são as transições.
  • Função de transferência:mapeia valores numéricos de pixels para luminância ou cor exibida, ajustando a resposta visual humana não linear. Por exemplo, sRGB, HLG e PQ.
  • Gama de cores:representa o intervalo de cores que um dispositivo pode reproduzir.

Equívocos comuns sobre HDR:

  • Cores vibrantes:gamas de cores mais amplas, como Display P3 e Adobe RGB, estavam disponíveis antes do HDR, e a maioria das telas ainda é cortada para P3, mesmo com conteúdo BT.2020.
  • Mais contraste/melhor detalhe de preto:o HDR não oferece pretos mais escuros do que o SDR na mesma tela. As telas OLED oferecem contraste infinito para ambos. Embora o PQ aloque mais bits para regiões escuras, ele não é um recurso HDR universal.
  • Maior profundidade de bits:embora alguns perfis de vídeo HDR (por exemplo, HDR10) usem streams de 10 ou 12 bits, isso é específico desses perfis e não inerente ao HDR. Profundidades de bits mais altas também são comuns em outros formatos de imagem.

O HDR significa principalmente maior brilho máximo. Esse "headroom HDR" é definido como uma região flutuante em relação ao SDR. Enquanto o vídeo HDR tradicional geralmente codifica um headroom fixo, as telas modernas usam headroom dinâmico, o que pode levar a diferenças de qualidade. Tecnologias como Ultra HDR e mapas de ganho oferecem alternativas com uso eficiente de bits. O kit de ferramentas de UI do Android usa a API extendedRangeBrightness para oferecer experiências em HDR, mesmo com RGBA_8888.

Vídeos 📹

Elementos compartilhados avançados com transformação de formas | Dicas do Jetpack Compose

O Jetpack Compose agora permite transições avançadas de elementos compartilhados, transformação de formas sofisticada e animações de revelação. Os desenvolvedores podem configurar SharedTransitionLayout no nível superior do app e usar Modifier.sharedBounds para vincular elementos.

O morphing de formas é um novo recurso importante, alcançado com o uso da biblioteca de formas gráficas AndroidX do Material 3. Isso envolve criar um objeto Morph com formas de início/fim definidas, impulsionar o progresso dele com animateFloat (de AnimatedVisibilityScope) e aplicá-lo como um clipe usando um OverlayClip personalizado. Os efeitos de revelação usam skipToLookaheadSize e skipToLookaheadPosition. Todas essas animações avançadas também são compatíveis com gestos de volta preditiva.

Gemini multimodal no Android Studio: desenvolvimento de interface com tecnologia de IA

A IA do Gemini no Android Studio ajuda no desenvolvimento de interfaces gerando código de designs (incluindo imagem para código), criando visualizações prévias do Compose com dados sintéticos e refinando a interface atual com comandos diretos.

Consumir um SDK compatível com o ambiente de execução

O Android 14 apresenta o SDK Runtime, uma nova tecnologia que isola SDKs de terceiros em um sandbox de processo seguro e separado para aumentar a privacidade e a segurança.

Para desenvolvedores:

  • Os SDKs ativados pelo ambiente de execução (RE) são executados nesse processo separado.
  • Os SDKs compatíveis com o ambiente de execução (RA, na sigla em inglês) atuam como intermediários no seu app.
  • Carregue os SDKs de RE usando SdkSandboxManagerCompat, observando as restrições (por exemplo, em primeiro plano, carga única).
  • As ferramentas de shim simplificam a comunicação de baixo nível entre processos.
  • Renderize a interface dos SDKs do RE usando SandboxedSdkView e SandboxedUiAdapter.
  • Inicie atividades do SDK Runtime usando SdkActivityLauncher.

Transformação de formas do Material 3 no WearOS | Dicas do Jetpack Compose

O Material 3 para Wear OS no Compose agora simplifica a transformação de formas. Os desenvolvedores podem adicionar facilmente mudanças de forma animadas a botões redondos com IconButtonDefaults.animatedShapes, criar grupos de botões que animam mudanças de largura usando o componente ButtonGroup e Modifier.animateWidth(), além de criar listas de rolagem vertical (TransformingLazyColumn) em que os itens são dimensionados e transformados usando TransformationSpec à medida que se aproximam das bordas da tela.

Versões do AndroidX 🚀

Confira um resumo das mudanças no AndroidX, priorizando as mais relevantes para desenvolvedores de apps Android:

Mudança geral que afeta as bibliotecas do Compose:

  • Padrão minSdk atualizado para a API 23:para androidx.compose animation, foundation, material, runtime e ui, a versão mínima padrão do SDK foi movida da API 21 para a API 23. Isso significa que, se você estiver usando as versões alfa mais recentes dessas bibliotecas do Compose, seu app vai exigir implicitamente o Android 6.0 (Marshmallow) ou versões mais recentes.

Principais mudanças para desenvolvedores do Compose:

  • Nova API de retenção (ambiente de execução do Compose): apresenta uma API de retenção semelhante a rememberSaveable, mas para valores que saem da hierarquia de composição sem serem serializados. Ele tem um ciclo de vida mais curto do que os valores salvos e se comporta de maneira semelhante a um ViewModel, oferecendo uma nova maneira de gerenciar o estado de elementos combináveis que podem entrar e sair da composição.
  • Transições de elementos compartilhados aprimoradas (animação e interface do usuário do Compose): novas APIs para ativar/desativar elementos compartilhados dinamicamente, considerar transições em andamento e definir limites de destino alternativos quando um elemento compartilhado é descartado. Um novo Modifier.skipToLookaheadPosition também está disponível para ancorar layouts.
  • Pré-busca de pager melhorada (Compose Foundation): agora, a estratégia de pré-busca do pager usa uma "janela de cache" (1 tamanho de janela de visualização) em vez de um único item, e a pré-busca inicial é ativada por padrão. Os itens também são mantidos por mais tempo para uma rolagem mais suave.
  • Processamento refinado de foco para mouse/touchpad (Compose Foundation e UI): ComposeViews agora vai limpar automaticamente o foco quando um evento de ponteiro para baixo (do mouse ou touchpad) ocorrer fora do nó em foco. É possível desativar essa opção.
  • Retângulos de foco personalizáveis (Compose Foundation): o FocusProperties agora permite definir uma área de foco personalizada em vez de usar a caixa delimitadora padrão, melhorando a travessia de foco e a lógica de "manter na visualização" em contêineres roláveis.
  • Elemento combinável LifecycleOwner (ciclo de vida): um novo elemento combinável permite criar instâncias LifecycleOwner com escopo diretamente na árvore da interface. Isso é particularmente útil para gerenciar ciclos de vida de componentes de forma independente e para bibliotecas como a Navigation.
  • Suporte a tipos anuláveis em SavedStateHandle (Lifecycle e SavedState): simplifica o salvamento e a restauração de propriedades anuláveis com suporte nativo em SavedStateHandle e SavedStateRegistryOwner.
  • Novo LineHeightStyle.Mode.Tight (Compose Foundation e UI): um novo modo "Tight" ajuda a aplicar alturas de linha menores, mesmo que isso signifique cortar glifos mais altos, oferecendo um controle mais preciso do layout de texto.
  • Toque duas vezes para selecionar palavra (Compose Foundation): adicionamos suporte para tocar duas vezes e selecionar palavras em SelectionContainer e BasicTextField.
  • Mudanças no comportamento do WindowInsets (Compose UI e Foundation):
    ◦ Uma nova API WindowInsets.cutoutPath para receber o caminho do corte da tela.
    ◦ A flag isWindowInsetsDefaultPassThroughEnabled foi removida, definindo WindowInsets como não consumir por padrão, permitindo que as visualizações secundárias os recebam.
  • AndroidView requestRectangleOnScreen Correção (Compose Foundation): as solicitações feitas por AndroidViews (por exemplo, EditText tentando permanecer na tela) agora são propagadas corretamente para o Compose.
  • Rolagem aprimorada da roda do mouse em 2D (Compose Foundation e UI): melhor suporte para eventos de rolagem da roda do mouse em 2D, com novas APIs de teste e uma flag para controlar o comportamento.

Novas bibliotecas e utilitários:

  • androidx.core:core-backported-fixes (nova biblioteca): essa nova biblioteca permite que os desenvolvedores verifiquem se correções de bugs críticos (por exemplo, problemas no nível da plataforma, como bugs específicos da câmera) foram aplicadas a um dispositivo. Isso permite oferecer experiências diferentes para o usuário, dependendo se um bug conhecido foi resolvido ou não.

Outras mudanças importantes:

  • Atividade e entrada de jogos:adicionamos suporte padrão para tamanhos de página de 16 KB e suporte a mouse para GameActivity.
  • Posicionamento de dicas do Material3:mais provedores de posição para dicas, permitindo o posicionamento acima, abaixo, à esquerda ou à direita da âncora.
  • Material3 DatePicker Correções:garante que o DatePicker respeite a própria localidade para formatação de números e corrige problemas de exibição RTL.
  • Compatibilidade com display_override de TWA (navegador): adicionamos compatibilidade com a propriedade de manifesto display_override de TWA, oferecendo mais controle sobre a exibição de TWA.
  • Abrir URL inicial no app externo (navegador): adicionamos uma intent para permitir a abertura do URL inicial de uma TWA em um navegador externo.

Android Developers Backstage (em inglês)

O Android Developers Backstage está de volta com mais um episódio.

Preenchimento automático no Compose

O Jetpack Compose 1.8 apresenta recursos de preenchimento automático significativamente aprimorados, aproveitando o sistema de semântica do Compose. Agora os desenvolvedores podem integrar facilmente o preenchimento automático no nível do sistema apenas marcando campos de texto com semântica de tipo de conteúdo relevante (por exemplo, nome de usuário, senha), eliminando a necessidade de gerenciamento manual da árvore de preenchimento automático e melhorando o desempenho.

 

Agora… 👋

Esta edição termina aqui, com cobertura do Android 16 QPR2 Beta 1, do lançamento de recursos do Android Studio Narwhal, do Jetpack Compose 1.9, do Media 3 1.8, do Shape Morphing e do preenchimento automático no Compose, entre outros.

Volte em breve para conferir a próxima atualização do universo de desenvolvedores Android.

Escrito por:

Continuar lendo