4

App Links e Universal Links em Produção: assetlinks.json e AASA — sem pacote (Parte 5)

E 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)

https://medium.com/@crdornelles/app-links-e-universal-links-deep-links-em-produ%C3%A7%C3%A3o-parte-5-73ed0a186e75


Alguém já sofreu com App Links abrindo seletor mesmo com assetlinks.json correto?

Queria saber se foi cache, SHA256 ou outra coisa.

Carregando publicação patrocinada...
2

+3

Achei admirável a documentação em post do seu projeto, mas sinto que falta mais informações. Não pesquisei para saber de fato tudo, mas se possivel, tenta dá mais detalhes de uso, e/ou em todo post ter um section explicando o projeto, sinto que perde "hype" se não houver um explicação média total.

Além disso, pretende fazer vídeos mostrando a aplicação ?

Sabe ou pensou em como divulgar a idéia além de conteúdos ? Digo parceria com software-houses, etc.

Acredito que possa usar IA nos posts, recentemente vi um post que ajuda com isso: https://www.tabnews.com.br/MagoAcademico/o-unico-prompt-que-voce-precisa-aprender
Acredito que se aplicar irá conseguir documentar melhor seu projeto para que outros como eu possa só de ler entender tudo facilmente.

Por ultimo, pretende criar um "paper"/artigo completo geral retratando tudo ?

4

Oi, MrJ, obrigado pelo feedback e pelas perguntas!

Sobre mais detalhes de uso: faz sentido, cada post foca em uma camada específica (Android, iOS, Flutter, produção…), mas vou considerar adicionar um contexto do projeto no início dos próximos posts.

Vídeos: não está nos planos por enquanto, mas a série completa com o código rodando está no repositório — https://github.com/crdornelles/fit_connect — dá para clonar e testar localmente (recomendo inclusive).

Parcerias e divulgação: por enquanto, o foco é a qualidade técnica da série. Quando estiver completa, pode ser um bom ponto de partida para isso.

Paper/artigo geral: o post 9 (bônus) é justamente uma visão consolidada com refatoração e Clean Architecture — deve fechar bem esse ciclo.

Valeu por engajar!