App Links e Universal Links em Produção: assetlinks.json e AASA — sem pacote (Parte 5)
Continuando a série. Até aqui tudo funcionou no desenvolvimento.
Aí foi para produção.
O link abre o seletor. Ou o navegador. Nunca o app direto.
Causa mais comum: assetlinks.json incorreto, fora do path, ou com SHA256 do keystore errado.
A partir deste post usamos deeplinkslab.dev — domínio real, dedicado a testes da série. Nos posts anteriores o domínio era fictício; agora a configuração é idêntica ao que você precisaria em produção.
No Post 5 configurei a verificação bidirecional nas duas plataformas:
Android — assetlinks.json:
# Pegar o SHA256 do keystore de debug
keytool -list -v \
-keystore ~/.android/debug.keystore \
-alias androiddebugkey \
-storepass android \
-keypass android | grep "SHA256:"
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target": {
"namespace": "android_app",
"package_name": "com.fitconnect.app",
"sha256_cert_fingerprints": ["AA:BB:CC:..."]
}
}]
Deploy: https://deeplinkslab.dev/.well-known/assetlinks.json
Se Content-Type estiver errado ou houver redirect no path, o Android ignora o arquivo silenciosamente — o link abre no navegador sem nenhum erro visível.
iOS — apple-app-site-association:
{
"applinks": {
"apps": [],
"details": [{ "appID": "TEAM_ID.com.fitconnect.app", "paths": ["/signup"] }]
}
}
Deploy: https://deeplinkslab.dev/.well-known/apple-app-site-association
Revalidando em device (Android 12+)
Não use só pm get-app-links direto — ele pode retornar estado em cache. O fluxo correto:
adb shell pm set-app-links --package com.fitconnect.app 0 all
adb shell pm verify-app-links --re-verify com.fitconnect.app
adb shell pm get-app-links com.fitconnect.app
Status verified = verificação concluída com sucesso.
Coisas que quebram fácil
- SHA256 de debug em build de release (ou vice-versa)
- servidor respondendo sem
Content-Type: application/json - redirect no path
/.well-known/(Android não segue redirect) - testar Universal Links no simulador em vez de device físico
Fonte (post completo no Medium)
Alguém já sofreu com App Links abrindo seletor mesmo com assetlinks.json correto?
Queria saber se foi cache, SHA256 ou outra coisa.