O Android 17 alcançou oficialmente a estabilidade da plataforma hoje com a 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, a versão Beta 3 traz vários novos recursos para ajudar você a criar aplicativos melhores, mais seguros e altamente integrados.
Prepare seus apps, bibliotecas, ferramentas e mecanismos de jogo.
Se você desenvolve um SDK, uma biblioteca, uma ferramenta ou um mecanismo de jogo, é 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 pelo Google Play ou por 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. Analise as mudanças de comportamento para focar nos 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 importantes:
- Redimensionamento em telas grandes:depois de segmentar o Android 17, não será mais possível desativar a manutenção das restrições de orientação, redimensionamento e 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) 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 um UnsatisfiedLinkError.
- Ativar a CT por padrão: a transparência de certificados (CT) está ativada por padrão. No Android 16, a CT está disponível, mas os apps precisam ativar a opção.
- 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 na câmera e na mídia
Opções de personalização do seletor de fotos
Agora, o Android permite personalizar a apresentação visual do seletor de fotos para complementar melhor a interface do usuário do seu app. Ao aproveitar a nova API PhotoPickerUiCustomizationParams, é possível modificar a proporção da visualização em grade do quadrado padrão de 1:1 para uma tela retrato 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 integrar o seletor de fotos do Android, que preserva a privacidade, à experiência do seu app. Saiba como incorporar o seletor de fotos diretamente no seu 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 suporte ao formato de imagem RAW14, o padrão do setor para fotografia digital sofisticada, usando a nova constante ImageFormat.RAW14. RAW14 é um formato de 14 bits por pixel de canal único 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, oferecendo acesso aos melhores e mais recentes recursos de câmera, como "Superresolução" ou melhorias de ponta com tecnologia de IA. É possível 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 com Bluetooth LE Audio
O Android agora inclui uma categoria de dispositivo específica para aparelhos auditivos de áudio Bluetooth de baixa energia (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. É possível encaminhar 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 Extended HE-AAC fornecido pelo sistema. Esse codificador é compatível com taxas de bits baixas e altas usando codificação unificada de fala e áudio. É possível acessar esse codificador usando a API MediaCodec com 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 performance e bateria
Reduzir wakelocks com suporte de 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á lançando um botão de localização renderizado pelo sistema que pode ser incorporado diretamente ao layout do seu app usando uma biblioteca do Android Jetpack. Quando um usuário toca nesse botão do sistema, o app recebe acesso ao local exato apenas para a sessão atual. Para implementar isso, declare a permissão USE_LOCATION_BUTTON.
Configurações discretas de visibilidade de senha para teclados físicos e sensíveis ao toque
Esse recurso divide a configuração de 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 híbrida de APKs com 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) com o 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 para 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 diferentes densidades de pixels 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 os nomes (rótulos) dos apps no espaço de trabalho da tela inicial. Verifique se o ícone do app é distinto e reconhecível.
Picture-in-picture interativo para computador
Ao contrário do picture-in-picture tradicional, essas janelas fixadas permanecem interativas e 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 reformulada
Principal recurso
Configurações de exclusão de apps de VPN
Ao usar a nova intent ACTION_VPN_APP_EXCLUSION_SETTINGS, seu app pode abrir 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 das APIs 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 suporte aprimorado a SSL para grupos nomeados em TLS.
Começar a usar o Android 17
Você pode registrar qualquer dispositivo Pixel compatível ou usar as imagens do sistema de 64 bits com o Android Emulator.
- Compile com o novo SDK e informe os problemas na página de feedback.
- Teste a compatibilidade do seu app atual e saiba se ele será afetado pelas mudanças no Android 17.
Para informações completas, acesse o site para desenvolvedores do Android 17.
-
Novidades sobre produtosO Google I/O '26 apresenta 17 anúncios importantes para desenvolvedores Android com foco em produtividade liderada por agentes, Compose First como nosso padrão de interface, mídia de alta performance e desenvolvimento adaptável para o ecossistema em expansão.
Matthew McCullough • Leitura de 8 minutos -
Novidades sobre produtosAnunciado hoje durante o The Android Show, o Android está passando de um sistema operacional para um sistema de inteligência, criando mais oportunidades de engajamento com seus apps.
Matthew McCullough • Leitura de 4 minutos -
Novidades sobre produtosHoje, estamos aprimorando o desenvolvimento para Android com o Gemma 4, nosso mais recente modelo aberto de última geração projetado com recursos complexos de raciocínio e chamada de ferramentas autônoma.
Matthew McCullough • Leitura de 2 minutos
Receba os insights mais recentes sobre desenvolvimento Android na sua caixa de entrada semanalmente.