O Android 17 alcançou oficialmente a estabilidade da plataforma hoje com o Beta 3. Isso significa que a superfície da API está bloqueada. Você pode realizar testes de compatibilidade finais e enviar seus apps direcionados ao Android 17 para a Google Play Store. Além disso, o Beta 3 oferece vários novos recursos para ajudar você a criar aplicativos melhores, mais seguros e altamente integrados.
Prepare seus apps, bibliotecas, ferramentas e mecanismos de jogos
Se você desenvolve um SDK, biblioteca, ferramenta ou mecanismo de jogos, é ainda mais importante preparar as atualizações necessárias agora para evitar que os desenvolvedores de apps e jogos downstream sejam bloqueados por problemas de compatibilidade e permitir que eles segmentem os recursos mais recentes do SDK. Informe seus desenvolvedores downstream se forem necessárias atualizações para oferecer suporte total ao Android 17.
O teste envolve a instalação do app de produção ou de um app de teste que usa sua biblioteca ou mecanismo usando o Google Play ou outros meios em um dispositivo ou emulador que executa o Android 17 Beta 3. Trabalhe em todos os fluxos do app e procure problemas funcionais ou de interface. Revise as mudanças de comportamento para concentrar seus testes. Cada versão do Android contém mudanças na plataforma que melhoram a privacidade, a segurança e a experiência geral do usuário, e essas mudanças podem afetar seus apps. Confira algumas mudanças em que você precisa se concentrar:
- Redimensionamento em telas grandes: depois de direcionar o Android 17, não será mais possível desativar a manutenção da orientação, do redimensionamento e das restrições de proporção em telas grandes.
- Carregamento dinâmico de código:se o app for direcionado ao Android 17 ou versões mais recentes, a proteção de carregamento dinâmico de código (DCL, na sigla em inglês) mais seguro introduzida no Android 14 para arquivos DEX e JAR agora se estende a bibliotecas nativas. Todos os arquivos nativos carregados usando System.load() precisam ser marcados como somente leitura. Caso contrário, o sistema vai gerar UnsatisfiedLinkError.
- Ativar a CT por padrão: a transparência de certificados (CT, na sigla em inglês) está ativada por padrão. No Android 16, a CT está disponível, mas os apps precisam ativar o recurso.
- Proteções de rede local: os apps direcionados ao Android 17 ou versões mais recentes têm o acesso à rede local bloqueado por padrão. Mude para o uso de seletores que preservam a privacidade, se possível, e use o novo ACCESS_LOCAL_NETWORK para acesso amplo e persistente.
Melhorias de mídia e câmera
Opções de personalização do seletor de fotos
O Android agora permite personalizar a apresentação visual do seletor de fotos para complementar melhor a interface do usuário do app. Ao aproveitar a nova API PhotoPickerUiCustomizationParams, você pode modificar a proporção da visualização em grade do quadrado padrão de 1:1 para uma tela vertical de 9:16. Essa flexibilidade se estende à intent ACTION_PICK_IMAGES e ao seletor de fotos incorporado, permitindo que você mantenha uma estética coesa quando os usuários interagem com a mídia.
Tudo isso faz parte do nosso esforço para ajudar a fazer com que o seletor de fotos do Android que preserva a privacidade se ajuste perfeitamente à experiência do app. Saiba como incorporar o seletor de fotos diretamente no app para ter a experiência mais nativa.
val params = PhotoPickerUiCustomizationParams.Builder() .setAspectRatio(PhotoPickerUiCustomizationParams.ASPECT_RATIO_PORTRAIT_9_16) .build() val intent = Intent(MediaStore.ACTION_PICK_IMAGES).apply { putExtra(MediaStore.EXTRA_PICK_IMAGES_UI_CUSTOMIZATION_PARAMS, params) } startActivityForResult(intent, REQUEST_CODE)
Suporte ao formato de imagem RAW14 : o Android 17 introduz o suporte ao formato de imagem RAW14, o padrão do setor para fotografia digital sofisticada, pela nova constante ImageFormat.RAW14. RAW14 é um formato de canal único, de 14 bits por pixel, que usa um layout densamente compactado em que cada quatro pixels consecutivos são compactados em sete bytes.
Extensões de câmera definidas pelo fornecedor:o Android 17 adiciona extensões definidas pelo fornecedor para permitir que parceiros de hardware definam e implementem modos de extensão de câmera personalizados para oferecer acesso aos melhores e mais recentes recursos de câmera, como "Super Resolution" ou melhorias de ponta orientadas por IA. Você pode consultar esses modos usando a API isExtensionSupported(int).
APIs de tipo de dispositivo de câmera:as novas APIs do Android 17 permitem consultar o tipo de dispositivo subjacente para identificar se uma câmera é um hardware integrado, uma webcam USB externa ou uma câmera virtual.
Suporte a aparelhos auditivos Bluetooth LE Audio
O Android agora inclui uma categoria de dispositivo específica para aparelhos auditivos de áudio Bluetooth Low Energy (BLE). Com a adição da constante AudioDeviceInfo.TYPE_BLE_HEARING_AID, seu app agora pode distinguir aparelhos auditivos de fones de ouvido comuns.
val audioManager = getSystemService(Context.AUDIO_SERVICE) as AudioManager
val devices = audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS)
val isHearingAidConnected = devices.any { it.type == AudioDeviceInfo.TYPE_BLE_HEARING_AID }Roteamento de áudio granular para aparelhos auditivos
O Android 17 permite que os usuários gerenciem de forma independente onde sons específicos do sistema são reproduzidos. Eles podem escolher rotear notificações, toques e alarmes para aparelhos auditivos conectados ou para o alto-falante integrado do dispositivo.
Codificador de software HE-AAC estendido
O Android 17 apresenta um codificador de software HE-AAC estendido fornecido pelo sistema. Esse codificador oferece suporte a taxas de bits baixas e altas usando codificação unificada de fala e áudio. Você pode acessar esse codificador pela API MediaCodec usando o nome c2.android.xheaac.encoder ou consultando o tipo MIME audio/mp4a-latm.
val encoder = MediaCodec.createByCodecName("c2.android.xheaac.encoder")
val format = MediaFormat.createAudioFormat(MediaFormat.MIMETYPE_AUDIO_AAC, 48000, 1)
format.setInteger(MediaFormat.KEY_BIT_RATE, 24000)
format.setInteger(MediaFormat.KEY_AAC_PROFILE, MediaCodecInfo.CodecProfileLevel.AACObjectXHE)
encoder.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE)Melhorias de desempenho e bateria
Reduza os wakelocks com suporte ao listener para alarmes allow-while-idle
O Android 17 apresenta uma nova variante de AlarmManager.setExactAndAllowWhileIdle que aceita um OnAlarmListener em vez de um PendingIntent. Esse novo mecanismo baseado em callback é ideal para apps que dependem de wakelocks contínuos para realizar tarefas periódicas, como apps de mensagens que mantêm conexões de soquete.
val alarmManager = getSystemService(AlarmManager::class.java)
val listener = AlarmManager.OnAlarmListener {
// Do work here
}
alarmManager.setExactAndAllowWhileIdle(
AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + 60000,
listener,
null
)Atualizações de privacidade
Botão de localização fornecido pelo sistema
O Android está introduzindo um botão de localização renderizado pelo sistema que você poderá incorporar diretamente no layout do app usando uma biblioteca do Android Jetpack. Quando um usuário toca nesse botão do sistema, seu app recebe acesso à localização exata apenas para a sessão atual. Para implementar isso, você precisa declarar a permissão USE_LOCATION_BUTTON.
Configurações discretas de visibilidade de senha para teclados físicos e de toque
Esse recurso divide a configuração do sistema "Mostrar senhas" em duas preferências distintas do usuário: uma para entradas baseadas em toque e outra para entradas de teclado físico (hardware). Os caracteres inseridos por teclados físicos agora ficam ocultos imediatamente por padrão.
val isPhysical = event.source and InputDevice.SOURCE_KEYBOARD == InputDevice.SOURCE_KEYBOARD val shouldShow = android.text.ShowSecretsSetting.shouldShowPassword(context, isPhysical)
Segurança
Carregamento dinâmico de código somente leitura forçado
Para melhorar a segurança contra ataques de injeção de código, o Android agora exige que as bibliotecas nativas carregadas dinamicamente sejam somente leitura. Se o app for direcionado ao Android 17 ou versões mais recentes, todos os arquivos nativos carregados usando System.load() precisarão ser marcados como somente leitura.
val libraryFile = File(context.filesDir, "my_native_lib.so") // Mark the file as read-only before loading to comply with Android 17+ security requirements libraryFile.setReadOnly() System.load(libraryFile.absolutePath)
Assinatura de APK híbrida de criptografia pós-quântica (PQC)
Para se preparar para futuros avanços na computação quântica, o Android está introduzindo suporte à criptografia pós-quântica (PQC) pelo novo esquema de assinatura de APK v3.2. Esse esquema usa uma abordagem híbrida, combinando uma assinatura clássica com uma assinatura ML-DSA.
Experiência do usuário e interface do sistema
Melhor suporte a widgets em telas externas
Esse recurso melhora a consistência visual dos widgets de apps quando eles são mostrados em telas conectadas ou externas com densidades de pixels diferentes usando unidades DP ou SP.
val options = appWidgetManager.getAppWidgetOptions(appWidgetId) val displayId = options.getInt(AppWidgetManager.OPTION_APPWIDGET_DISPLAY_ID) val remoteViews = RemoteViews(context.packageName, R.layout.widget_layout) remoteViews.setViewPadding( R.id.container, 16f, 8f, 16f, 8f, TypedValue.COMPLEX_UNIT_DIP )
Rótulos de apps ocultos na tela inicial
O Android agora oferece uma configuração do usuário para ocultar nomes de apps (rótulos) no espaço de trabalho da tela inicial. Verifique se o ícone do app é distinto e reconhecível.
Picture-in-picture interativo para computadores
Ao contrário do picture-in-picture tradicional, essas janelas fixadas permanecem interativas enquanto ficam sempre sobrepostas a outras janelas de aplicativos no modo área de trabalho.
val appTask: ActivityManager.AppTask = activity.getSystemService(ActivityManager::class.java).appTasks[0] appTask.requestWindowingLayer( ActivityManager.AppTask.WINDOWING_LAYER_PINNED, context.mainExecutor, object : OutcomeReceiver<Int, Exception> { override fun onResult(result: Int) { if (result == ActivityManager.AppTask.WINDOWING_LAYER_REQUEST_GRANTED) { // Task successfully moved to pinned layer } } override fun onError(error: Exception) {} } )
Barra de ferramentas de gravação de tela redesenhada
Funcionalidade principal
Configurações de exclusão de apps de VPN
Ao usar a nova intent ACTION_VPN_APP_EXCLUSION_SETTINGS, seu app pode iniciar uma tela de configurações gerenciada pelo sistema em que os usuários podem selecionar aplicativos para ignorar o túnel de VPN.
val intent = Intent(Settings.ACTION_VPN_APP_EXCLUSION_SETTINGS) if (intent.resolveActivity(packageManager) != null) { startActivity(intent) }
Atualizações da API OpenJDK 25 e 21
Essa atualização traz recursos e refinamentos abrangentes do OpenJDK 21 e do OpenJDK 25, incluindo o suporte mais recente ao Unicode e o suporte a SSL aprimorado para grupos nomeados em TLS.
Começar a usar o Android 17
Você pode inscrever qualquer dispositivo Pixel com suporte ou usar as imagens do sistema de 64 bits com o Android Emulator.
- Compile com o novo SDK e informe problemas na página de feedback.
- Teste a compatibilidade do app atual e saiba se ele é afetado por mudanças no Android 17.
Para informações completas, acesse o site para desenvolvedores do Android 17.
Continuar lendo
-
Novidades sobre produtos
Hoje, estamos aprimorando o desenvolvimento do Android com o Gemma 4, nosso modelo aberto de última geração projetado com recursos complexos de raciocínio e chamada de ferramentas autônomas.
Matthew McCullough • Leitura de 2 minutos
-
Novidades sobre produtos
Um pilar do ecossistema Android é nosso compromisso compartilhado com a confiança do usuário. À medida que o cenário móvel evoluiu, nossa abordagem para proteger informações sensíveis também evoluiu.
Robert Clifford • Leitura de 3 minutos
-
Novidades sobre produtos
Queremos tornar mais rápido e fácil para você criar apps Android de alta qualidade, e uma maneira de ajudar você a ser mais produtivo é colocar a IA ao seu alcance.
Matthew McCullough • Leitura de 2 minutos
Fique por dentro
Receba os insights mais recentes sobre o desenvolvimento do Android na sua caixa de entrada semanalmente.