O Android 17 começou a chegar oficialmente, primeiro nos Pixel (a partir de 16 de junho de 2026) e nos demais aparelhos elegíveis ao longo de 2026. É a API level 37, codinome Cinnamon Bun. Mas o mais importante não é a lista de recursos: é a direção. A própria Google vem chamando o movimento de “The Intelligent OS” — o Android deixando de ser só um sistema operacional para virar uma plataforma onde agentes de IA operam dentro dos apps.
Como o volume de novidades é grande, este artigo organiza tudo por área: IA e agentes, multi-tela e continuidade, câmera e mídia, performance, segurança e privacidade, conectividade, e o setup/migração para API 37. Onde a API ainda está em alpha/preview, isso vem sinalizado.

IA e agentes: o app vira uma “ferramenta” do sistema
A aposta central do Android 17 é deixar agentes (como o Gemini) executarem tarefas dentro dos apps, no próprio dispositivo. Três peças importam:
- AppFunctions (Android MCP): uma API de plataforma + biblioteca Jetpack (em alpha) para expor as capacidades do seu app como “ferramentas” que agentes descobrem e executam localmente — o equivalente on-device ao Model Context Protocol. Você anota funções (com KDoc) e os agentes as invocam via AppFunctionManager, com acesso direto ao estado local do app. A integração com o Gemini está em preview privado (programa de acesso antecipado).
- Acesso à NPU: apps que miram o Android 17 e acessam a NPU (via LiteRT NPU delegate, SDKs de fornecedor ou a antiga NNAPI) precisam declarar a feature FEATURE_NEURAL_PROCESSING_UNIT no manifesto, senão ficam bloqueados.
- Gemini Intelligence: os recursos de agente no sistema chegam de forma gradual em aparelhos selecionados.
// Jetpack App Functions (alpha) — exponha capacidades como "ferramentas"
// que agentes (Gemini) descobrem e executam no dispositivo.
// Assinatura ilustrativa; a API está em alpha e pode mudar.
class TaskFunctions(private val repo: TaskRepository) {
@AppFunction
suspend fun createTask(title: String, dueAtMillis: Long? = null): String {
return repo.create(title, dueAtMillis).id // usa o estado local do app
}
}
<!-- targetSdk 37: declare para acessar a NPU (LiteRT delegate, SDK do fornecedor, NNAPI) -->
<!-- confirme a string exata da feature na documentação oficial -->
<uses-feature
android:name="android.hardware.neural_processing_unit"
android:required="false" />
Multi-tela e continuidade entre aparelhos
- Handoff: continuidade entre dispositivos — comece no celular, continue no tablet. Você habilita com setHandoffEnabled() na Activity e fornece o estado a recriar no destino via onHandoffActivityDataRequested() (retornando um HandoffActivityData). Suporta transição app-para-app e fallback app-para-web quando o app não existe no aparelho de destino.
- Desktop Mode / telas conectadas: interface estilo desktop em monitores externos, com taskbar e janelas redimensionáveis (o “jeito DeX”, agora nativo).
- App Bubbles e Bubble Bar: transformar qualquer app em janela flutuante; em telas grandes, bolhas encaixadas na base com troca em um toque.
- Volume dedicado do assistente: novo modo de áudio MODE_ASSISTANT_CONVERSATION e atributo USAGE_ASSISTANT para controlar o áudio do assistente separadamente.
- Design: o visual segue a linha Material 3 Expressive, com animações mais “vivas”.
// Habilita a continuidade (Handoff) para esta Activity
activity.setHandoffEnabled(true)
// Forneça o estado que o aparelho de destino usará para recriar a tela
override fun onHandoffActivityDataRequested(): HandoffActivityData {
return HandoffActivityData.Builder()
// ...dados para restaurar a tela no outro dispositivo...
.build()
}
Câmera e mídia
- RAW14: novo formato RAW de 14 bits por pixel (canal único, empacotado), para apps de câmera profissionais capturarem mais detalhe e profundidade de cor.
- Tipo de câmera: novas APIs para saber se a câmera é interna, webcam USB externa ou virtual.
- Extensões de câmera de fornecedor: parceiros de hardware podem definir modos de extensão customizados.
- Live Update — Semantic Color API: cores semânticas em notificações via createSemanticStyleAnnotation() (INFO, SAFE, CAUTION, DANGER).
Performance e diagnóstico
- MessageQueue lock-free: nova implementação de android.os.MessageQueue melhora performance e reduz frames perdidos (quebra quem usava reflection nos campos privados dela).
- ProfilingManager com gatilhos: coleta automática de dados de performance em eventos como TRIGGER_TYPE_COLD_START, TRIGGER_TYPE_OOM, TRIGGER_TYPE_KILL_EXCESSIVE_CPU_USAGE e TRIGGER_TYPE_ANOMALY.
- JobDebugInfo: getPendingJobReasonStats() devolve por que jobs do JobScheduler estão pendentes e por quanto tempo.
- AlarmManager.setExactAndAllowWhileIdle com OnAlarmListener: variante com callback (em vez de PendingIntent) que reduz wake locks em tarefas periódicas.
- Limites de memória por app para evitar consumo excessivo de RAM.
Segurança e privacidade (o maior pacote)
Novos recursos:
- Advanced Protection Mode (AAPM): novo AdvancedProtectionManager para detectar o modo de proteção reforçada (bloqueia sideload, restringe dados por USB, exige Play Protect).
- Assinatura de APK pós-quântica (PQC): esquema híbrido que combina chaves clássicas (RSA/EC) com o algoritmo pós-quântico ML-DSA.
- Encrypted Client Hello (ECH): o TLS passa a criptografar o SNI por padrão (novas APIs de DnsResolver e elemento <domainEncryption> no Network Security Config).
- Android Contact Picker: seletor do sistema para compartilhar contatos específicos sem pedir READ_CONTACTS da agenda inteira.
- “Marcar como perdido” com bloqueio biométrico, Live Threat Detection e menos tentativas de PIN.
Mudanças de comportamento ao mirar o targetSdk 37:
- Certificate Transparency ligado por padrão (era opt-in no 16).
- OTP de SMS protegido: SMS comuns com OTP ficam indisponíveis por 3 horas — migre para a SMS Retriever API ou SMS User Consent API.
- Rede local bloqueada: para acessar a LAN, declare e peça a permissão ACCESS_LOCAL_NETWORK.
- Safer Native DCL: libs nativas carregadas com System.load() precisam ser somente leitura, senão é UnsatisfiedLinkError.
- Campos static final imutáveis via reflection/JNI (IllegalAccessException/crash).
- BAL hardening: migre de MODE_BACKGROUND_ACTIVITY_START_ALLOWED para controles granulares (ex.: ...ALLOW_IF_VISIBLE).
- Contatos (CP2): campos de PII fora do data view e validação SQL estrita sem READ_CONTACTS.
- Senhas ocultas em teclado físico; áudio em background endurecido (exige FGS while-in-use).
<!-- Necessário para acessar dispositivos na rede local (targetSdk 37+) -->
<uses-permission android:name="android.permission.ACCESS_LOCAL_NETWORK" />
Conectividade
- BluetoothSocket (RFCOMM): read() agora retorna -1 quando o socket fecha (alinhado ao InputStream) — ajuste seus loops.
- Redes de satélite restritas: otimizações para apps funcionarem sobre redes de baixa banda por satélite.
- UWB Downlink-TDoA: RangingManager com DlTdoaRangingParams/DlTdoaMeasurement para posicionamento por diferença de tempo de chegada.
// RFCOMM: trate o -1 para encerrar o loop de leitura
val buffer = ByteArray(1024)
while (true) {
val n = input.read(buffer)
if (n == -1) break // socket fechado / conexão caiu
handle(buffer, n)
}
Setup e migração (API 37)
Requisitos mínimos: Android Studio Meerkat (2024.3.1)+, AGP 8.9.0-rc01+, e no SDK Manager o platform “Cinnamon Bun” + Build-Tools 37. No módulo do app:
android {
compileSdk = 37
defaultConfig {
targetSdk = 37
}
}
Checklist de migração: audite uso de rede local (ACCESS_LOCAL_NETWORK), reflection em APIs internas (MessageQueue, static final), System.load() de libs nativas, dependência de OTP por SMS, áudio em background, acesso à NPU (uses-feature) e, principalmente, o comportamento em telas grandes.
A grande exigência: apps adaptáveis
Se há um recado obrigatório, é este: em telas grandes (sw >= 600dp), o Android 17 ignora screenOrientation, resizeableActivity, minAspectRatio e maxAspectRatio — sem opt-out. Apps travados em “retrato only” ou tamanho fixo vão se comportar diferente em foldables, tablets e desktop. Layouts responsívos e WindowSizeClass deixam de ser boa prática e viram requisito. O sistema também deixa de reiniciar a Activity por padrão em algumas mudanças de configuração (ex.: teclado físico).
Pontos de atenção
- AppFunctions e Gemini estão em alpha/preview. Dá para preparar o app agora, mas assinaturas podem mudar e a integração depende de acesso antecipado.
- Coisas quebram silenciosamente ao subir o targetSdk (rede local, libs nativas read-only, reflection). Teste em um branch antes de publicar.
- Rollout gradual: começa nos Pixel e depende do fabricante nos demais; recursos de Gemini chegam aos poucos.
- Confirme strings/assinaturas exatas na doc (ex.: feature da NPU, builders do Handoff) — APIs novas podem ajustar detalhes até estabilizar.
Conclusão
O Android 17 é menos “um punhado de features” e mais uma mudança de direção: agentes de IA viram usuários de primeira classe dos apps (AppFunctions), a experiência passa a ser multi-tela e contínua (Handoff, desktop), e a régua de segurança/privacidade sobe (ECH, CT, PQC, contatos, SMS, rede local). Para quem desenvolve, o recado é duplo: torne o app adaptável e comece a pensar em IA como parte do produto.
De olho daqui para frente: suba um branch com targetSdk 37, rode a suíte de testes, valide em foldable/tablet/desktop e experimente o AppFunctions no programa de acesso antecipado. O melhor momento para descobrir o que muda é agora — no seu ritmo, e não quando o rollout chegar ao aparelho dos seus usuários. 🚀
Referências
- Anúncio oficial (Google): Android 17 features
- Android Developers: Android 17 is here
- The Intelligent OS (agentes de IA): Making AI agents more helpful
- Visão geral do AppFunctions
- Features e APIs: developer.android.com/about/versions/17/features
- Behavior changes (targeting 17): developer.android.com
- Set up the Android 17 SDK: developer.android.com
- Release notes: developer.android.com