Esta é a prévia para desenvolvedores do Android 13. Envie seu feedback e ajude a deixar o Android 13 ainda melhor.

Visão geral de recursos e APIs

O Android 13 introduz ótimos recursos e APIs novos para desenvolvedores. As seções abaixo ajudam você a conhecer os recursos dos apps e a começar a usar as APIs relacionadas.

Para uma lista detalhada das APIs novas, modificadas e removidas, leia o Relatório de diferenças da API. Para ver detalhes sobre as novas APIs, acesse a Referência da API do Android. As APIs novas estão em destaque para melhor visibilidade. Além disso, para saber mais sobre as áreas em que as mudanças na plataforma podem afetar seus apps, consulte as mudanças de comportamento do Android 13 para apps destinados ao Android 13 e para todos os apps.

Produtividade do desenvolvedor

Ícones de app com tema

Usuário ativando ícones temáticos de apps
Figura 1: ativação de ícones temáticos para apps no Android 13

Começando pelo Android 13, os usuários podem ativar ícones de app com tema. Com esse recurso, os ícones dos apps em telas de início compatíveis do Android herdam a tonalidade da cor do plano de fundo escolhido e de outros temas.

Para oferecer suporte a esse recurso, o app precisa fornecer um ícone monocromático e apontar para ele do elemento <adaptive-icon> no manifesto. Se um usuário ativar a opção Ícones com tema no dispositivo, o sistema vai usar a cor do plano de fundo e o tema escolhidos pelo usuário para determinar a cor da tonalidade a ser aplicada ao ícone monocromático do app.

Caso o app não forneça um ícone monocromático, mas o usuário tenha ativado a opção ícones com tema, a versão padrão do ícone do app vai ser exibida na tela inicial.

Especificações

Ícones monocromáticos de apps precisam atender a estas especificações:

  • Ele precisa ser um VectorDrawable.
  • Recomendamos que o logotipo se encaixe em uma área de 36 x 36 dp em um contêiner de 90 x 90 dp. Se o logotipo precisar ser maior, ele pode ter o tamanho máximo de 60 x 60 dp.
  • Recomendamos logotipos planos. Se o logotipo for tridimensional, use o gradiente alfa.

A maioria dos apps pode reutilizar o drawable vetorial usado para notificações.

O exemplo abaixo mostra um ícone monocromático de app para o Google app, com linhas pontilhadas que representam os limites entre as áreas do logotipo e do contêiner. Eles são apresentados aqui apenas para fins ilustrativos e não estão de acordo com a escala real.

Especificações de design monocromático para um ícone temático de app: o ícone à
            esquerda tem linhas pontilhadas que representam as medidas, com a linha
            pontilhada externa rotulada como &quot;1&quot; representando o contêiner do ícone
            e a linha pontilhada interna rotulada como &quot;2&quot; representando a área
            do logotipo. O ícone à direita é aparência sem as
            linhas pontilhadas adicionadas.
Figura 2: medições do ícone temático de apps

1 Área do contêiner (90 x 90 dp).

2 Área do logotipo (recomenda-se 36 x 36 dp, no máximo 60 x 60 dp).

Implementar um ícone temático para o app

Adicione o atributo monochrome android:drawable ao elemento <adaptive-icon>. Por exemplo, em res/mipmap-anydpi-v26/ic_launcher.xml:

<adaptive-icon >
    <background android:drawable="..." />
    <foreground android:drawable="..." />
    <monochrome android:drawable="@drawable/myicon" />
</adaptive-icon>

No arquivo de manifesto, defina o ícone usando android:icon:

<application
    …
    android:icon="@mipmap/ic_launcher"
    …>
</application>

API de posicionamento para Configurações rápidas

As Configurações rápidas na aba de notificações são uma maneira conveniente para o usuário mudar configurações ou realizar ações rápidas sem sair do contexto de um app. Deixamos mais fácil encontrar e adicionar apps que fornecem blocos personalizados às Configurações rápidas. Usando uma nova API de posicionamento de bloco, o app agora pode solicitar que o usuário adicione diretamente um bloco personalizado ao conjunto de blocos ativos de Configurações rápidas. Em vez de precisar acessar as Configurações rápidas para adicionar o bloco, uma nova caixa de diálogo do sistema permite que ele o adicione em uma única etapa, sem sair do app.

Uma caixa de diálogo perguntando se o usuário quer adicionar um bloco às
          Configurações rápidas.

Melhorias no suporte para usuários multilíngues

O Android 13 introduz vários recursos para melhorar as experiências do app para usuários multilíngues, descritas nas seções abaixo:

Preferências de idioma por app

Em muitos casos, os usuários multilíngues definem um idioma para o sistema, como o inglês, mas querem selecionar outros idiomas para apps específicos, como holandês, chinês ou hindi. A fim de ajudar os apps a oferecer uma melhor experiência a esses usuários, o Android 13 introduz os recursos abaixo para apps que oferecem suporte a vários idiomas:

Os apps que não oferecem suporte a vários idiomas não são afetados por essas mudanças.

Para ver mais detalhes, consulte Preferências de idioma por app.

Melhoria no ajuste de texto em japonês

Agora, as TextViews conseguem ajustar o texto com base no bunsetsu (menor unidade sonora significativa) ou em frases, e não por caractere. Dessa forma, é possível proporcionar aplicativos mais elaborados e mais legíveis em japonês. Para aproveitar esse recurso, use android:lineBreakWordStyle="phrase" com as TextViews.

Ajuste de texto em japonês com base em frases ativado (abaixo) e desativado (acima).

Melhorias na altura de linhas para textos em idiomas não latinos

O Android 13 melhora a exibição de textos em idiomas não latinos, como tâmil, birmanês, télugo e tibetano, usando uma altura de linha adaptada a cada idioma. As alturas das novas linhas evitam cortes e melhoram o posicionamento dos caracteres. Para aproveitar essas melhorias, basta destinar o app ao Android 13. É importante fazer testes no app ao usar o novo espaçamento entre linhas, porque as mudanças podem afetar a IU em idiomas não latinos.

Alturas de linha cortadas no Android 12 (acima) e que agora ficam melhor posicionadas e não são cortadas no Android 13 (abaixo).

APIs Text Conversion

Falantes de idiomas como o japonês e o chinês usam métodos de entrada com alfabeto fonético, que geralmente reduzem a velocidade da pesquisa e de recursos como o preenchimento automático. No Android 13, os apps podem chamar a nova API Text Conversion para que os usuários consigam encontrar o que procuram com mais rapidez e facilidade. Antes, para fazer uma pesquisa, um usuário falante de japonês precisava seguir estas etapas:

  1. Inserir o hiragana com a pronúncia fonética do termo de pesquisa, como um lugar ou o nome de um app.
  2. Usar o teclado para converter os caracteres hiragana em kanji.
  3. Pesquisar novamente usando os caracteres kanji.
  4. Finalmente, ver os resultados da pesquisa.

Com a nova API de conversão de texto, os usuários falantes de japonês podem digitar em hiragana e receber imediatamente os resultados da pesquisa em kanji, pulando as etapas 2 e 3.

Atualizações da biblioteca Unicode

O Android 13 adiciona as melhorias, correções e mudanças mais recentes incluídas em Unicode ICU 70, Unicode CLDR 40 e Unicode 14.0 (links em inglês).

Veja algumas mudanças importantes:

  • O inglês en‑CA (Canadá) e o inglês en‑PH (República das Filipinas) usam recursos de tradução do inglês en (Estados Unidos) quando não há recursos de tradução disponíveis, em vez de usar o inglês en‑GB (Reino Unido).
  • A categoria plural many foi introduzida para os idiomas espanhol es, italiano it, português pt e português pt‑PT (Portugal). De forma parecida com o francês introduzido no CLDR v38 (link em inglês), ela é usada para grandes números.

Hifenização mais rápida

A hifenização facilita a leitura de texto agrupado e ajuda a tornar a IU mais adaptativa. No Android 13, otimizamos o desempenho da hifenização em até 200% para que você possa a ativar na TextView sem afetar o desempenho da renderização. Para permitir uma hifenização mais rápida, use as novas frequências fullFast ou normalFast no método setHyphenationFrequency().

Fontes vetoriais coloridas

Emoji vetorial em COLRv1 (à esquerda) e emoji em bitmap (à direita)

O Android 13 adiciona suporte à renderização de fontes COLRv1 e atualiza os emojis do sistema para o formato COLRv1. COLRv1 é um formato de fonte novo e altamente compacto, que é renderizado de forma rápida e nítida em qualquer tamanho.

Na maioria dos apps, o sistema processa tudo e o COLRv1 funciona normalmente. No entanto, caso o app implemente uma renderização de texto própria e use as fontes do sistema, recomendamos testar a renderização de emojis.

Para saber mais sobre o COLRv1, consulte os recursos abaixo:

Áudio bluetooth de baixa energia

O áudio de baixa energia é o formato de áudio sem fio de última geração criado para substituir o Bluetooth clássico e permitir novos casos de uso e topologias de conexão. Isso vai permitir que os usuários compartilhem e transmitam áudio a amigos e familiares ou que participem de transmissões públicas para ter acesso a informações, entretenimento ou recursos de acessibilidade. Esse formato foi projetado para garantir que os usuários recebam áudio de alta fidelidade sem sacrificar a duração da bateria e possam alternar entre diferentes casos de uso que não eram possíveis com o Bluetooth clássico. O Android 13 inclui suporte integrado ao áudio de baixa energia. Os desenvolvedores vão receber os novos recursos sem custos financeiros em dispositivos compatíveis.

MIDI 2.0

O Android 13 adiciona suporte ao novo padrão MIDI 2.0, incluindo a possibilidade de conectar hardware MIDI 2.0 por USB. Esse padrão atualizado oferece recursos como maior resolução para controladores, melhor compatibilidade com entonação não ocidental e desempenho mais expressivo usando controladores por nota.

Privacidade e segurança

Seletor de fotos

O Android 13 inclui uma nova experiência do seletor de fotos. Quando o app inicia o seletor de fotos, os usuários selecionam imagens e vídeos específicos para compartilhar, como fotos do perfil, em vez de conceder acesso a ele para ver toda a biblioteca de mídia.

O seletor de fotos oferece melhor privacidade aos usuários porque o app não precisa declarar nenhuma permissão de execução. Além disso, ele fornece uma IU integrada e padronizada para apps, o que cria uma experiência do usuário mais consistente.

Nova permissão de execução para dispositivos Wi-Fi por perto

O Android 13 introduz uma nova permissão de execução no grupo de permissões NEARBY_DEVICES para apps que gerenciam as conexões de um dispositivo aos pontos de acesso Wi-Fi por perto. Esses apps precisam declarar a nova permissão, NEARBY_WIFI_DEVICES, quando chamam várias APIs Wi-Fi. Além disso, contanto que os apps não determinem a localização física das APIs de Wi-Fi, eles não precisam declarar a permissão ACCESS_FINE_LOCATION quando são direcionados ao Android 13 ou versões mais recentes.

Saiba mais sobre a permissão para dispositivos Wi-Fi por perto.

Permissões que podem ser removidas pelo desenvolvedor

A partir do Android 13, o app pode revogar o acesso a permissões de execução que foram concedidas anteriormente, seja pelo sistema ou pelo usuário. Essa API permite que o app proteja a privacidade do usuário.

Para revogar uma permissão de execução específica, transmita o nome da permissão para revokeOwnPermissionOnKill(). Para revogar um grupo de permissões de execução ao mesmo tempo, transmita uma coleção de nomes de permissões para revokeOwnPermissionsOnKill(). A revogação acontece de forma assíncrona e encerra todos os processos associados ao UID do app.

O sistema aciona a revogação somente no momento em que é seguro. Mais especificamente, a revogação não ocorre enquanto um componente do app está em primeiro plano ou quando outro app está acessando componentes do app, como provedores de conteúdo. Caso queira revogar permissões imediatamente, chame exit(). No entanto, essa chamada para exit() pode gerar um comportamento indefinido ou falhas em outros apps que estão acessando seu app no momento.

Esquema de assinatura de APK v3.1

O Android 13 inclui suporte ao esquema de assinatura de APK v3.1, que apresenta melhorias em relação ao esquema de assinatura de APK v3. Esse esquema trata de alguns dos problemas conhecidos do esquema de assinatura de APK v3 com relação à alternação. Mais especificamente, o esquema de assinatura v3.1 permite que os apps ofereçam suporte a signatários originais e alternados em um único APK. O esquema de assinatura v3.1 também oferece suporte ao direcionamento de versão do SDK, o que permite que a alternação seja destinada a uma versão mais recente da plataforma.

O esquema de assinatura v3.1 usa um novo ID de bloco, que não é reconhecido no 12L ou versões anteriores. Portanto, a plataforma aplica este comportamento de signatário:

  • Dispositivos com o Android 13 usam o signatário alternado no bloco v3.1.
  • Dispositivos com versões mais antigas do Android ignoram o signatário alternado e, em vez disso, usam o signatário original no bloco v3.0.

Em apps que ainda não alternaram a chave de assinatura, nenhuma outra ação é necessária. Quando esses apps optarem por alternar, o sistema vai aplicar o novo esquema de assinatura v3.1 por padrão.

Apps que já foram alternados e querem continuar a usar a chave de assinatura alternada no bloco de assinatura v3.0 precisam atualizar a invocação do apksigner:

apksigner sign --ks keystore.jks |
  --key key.pk8 --cert cert.x509.pem
  --rotation-min-sdk-version API_LEVEL
  [signer_options] app-name.apk

... em que o API_LEVEL é 32 ou menos.

Gráficos

Sombreadores programáveis

Um sombreador animado AGSL, adaptado deste sombreador GLSL.

O Android 13 adiciona suporte a objetos programáveis RuntimeShader, com um comportamento definido usando a Linguagem de sombreamento gráfico do Android (AGSL, na sigla em inglês). A AGSL compartilha grande parte da sintaxe com a GLSL, mas funciona no mecanismo de renderização do Android para personalizar a exibição da tela do Android, além de filtrar o conteúdo da visualização. O Android usa esses sombreadores internamente para implementar efeitos de ondulação, desfoque e rolagem esticada. O Android 13 permite criar efeitos avançados parecidos para o app.

Principal recurso

Atualizações do OpenJDK 11

O Android 13 inicia o trabalho de atualização das bibliotecas principais do Android para se alinhar à versão LTS do OpenJDK 11, com atualizações de biblioteca e suporte à linguagem Java 11 para desenvolvedores de aplicativos e plataformas. As principais mudanças de biblioteca introduzidas no Android 13 também vão ser disponibilizadas para dispositivos Android 12 por uma atualização do sistema do Google Play para o módulo ART Mainline.

O Android 13 inclui as mudanças abaixo nas principais bibliotecas:

  • Suporte à palavra-chave var para variáveis locais e como lambdas de parâmetros.
  • Novos métodos na classe String:

    • isBlank()
    • lines()
    • repeat()
    • strip()
    • stripLeading()
    • stripTrailing()
  • Suporte a Collection.toArray(IntFunction) para facilitar a adaptação de uma coleção a uma matriz.

  • Suporte aos métodos ifPresentOrElse(), isEmpty(), orElseThrow() e stream() nas classes java.util Optional, OptionalDouble, OptionalInt e OptionalLong.

  • Suporte estendido para as SocketOptions, incluindo a reutilização de soquetes.

  • As funcionalidades NullReader, NullWriter, InputStream, OutputStream e transferTo() Reader, que transferem caracteres de leitura para um Writer.

  • A funcionalidade para codificação e decodificação de URLs usando Charsets foi adicionada.

  • Funcionalidade de Charset para FileReader, FileWriter, PrintStream e PrintWriter.

  • Novas funções transferTo(), readNBytes(), readAllBytes() e writeBytes() para ByteArrayInput ou OutputStream e Input ou OutputStream.

  • Suporte ao ambiente de execução e ao compilador para java.lang.invoke.VarHandle.

  • Atualização do java.util.concurrent para a API OpenJDK 11 usando VarHandle internamente.

Java e OpenJDK são marcas registradas da Oracle e/ou afiliadas.