📚 Pré-requisitos Teóricos: este projeto aplica conceitos ensinados na Especialização em Android Nativo. Recomendado revisar antes de iniciar.

🏰 P11: Guilda dos Heróis (Navigation Compose & Biometria)

v1.0 — Android Nativo, Kotlin, Jetpack Compose Declarativo, Navigation Compose, BiometricPrompt e Android Keystore de Hardware

Série Prática Android Clássico — Projeto 11 de 21


🏛️ Visão Geral & Arquitetura Visual

O projeto Guilda dos Heróis une a modernidade visual do Jetpack Compose à segurança biométrica de nível bancário no Android. A aplicação utiliza o Navigation Compose para estruturar um grafo de navegação modular entre Lista de Heróis, Ficha Detalhada e a cobiçada “Sala dos Tesouros”. O acesso a essa área restrita exige validação biométrica rigorosa via BiometricPrompt com fallback para credenciais do dispositivo, integrada a chaves criptográficas geradas no hardware seguro Android Keystore.

Fluxo Visual da Guilda dos Heróis com Navigation e Biometria

📁 Estrutura de Pastas Anti-Colisão

Todos os composables, gráficos de navegação e serviços de segurança estão contidos na subpasta canônica mobile-android-kotlin/:

catalogo_projetos/android_p11_herois_biometria/
├── assets/
│   ├── mockup_guilda_fluxo.svg
│   ├── screenshot_01_lista_herois.svg
│   ├── screenshot_02_detalhe_heroi.svg
│   ├── screenshot_03_biometria_prompt.svg
│   └── screenshot_04_sala_tesouros.svg
├── mobile-android-kotlin/
│   ├── app/
│   │   ├── src/
│   │   │   └── main/
│   │   │       ├── java/br/com/curso/guildaherois/
│   │   │       │   ├── security/
│   │   │       │   │   └── BiometriaManager.kt
│   │   │       │   ├── ui/
│   │   │       │   │   └── NavGraph.kt
│   │   │       │   └── MainActivity.kt
│   │   │       └── res/
│   │   └── build.gradle
│   ├── gradle/
│   ├── build.gradle
│   ├── gradlew
│   ├── settings.gradle
│   └── README.md
└── index.md

🧑‍💼 Engenharia de Software & Especificação Formal

1. Histórias de Usuário (User Stories)

ID Persona Narrativa da Funcionalidade Critério de Aceitação Principal Prioridade
US-01 Jogador / Líder de Guilda Quero navegar pela lista de heróis lendários com animação de transição suave. Navegação declarativa estruturada via rotas do Navigation Compose. Alta
US-02 Jogador / Líder de Guilda Quero acessar a Sala dos Tesouros autenticando com minha impressão digital ou Face Unlock. Abertura do diálogo nativo BiometricPrompt em menos de 500ms. Alta
US-03 Jogador / Líder de Guilda Quero poder digitar o PIN do aparelho caso a leitura biométrica falhe ou não esteja disponível. Suporte ao autenticador BIOMETRIC_STRONG ou DEVICE_CREDENTIAL. Alta
US-04 Oficial de Segurança Quero que nenhuma chave mestra de desbloqueio fique armazenada em texto plano. Uso do Android Keystore Provider gerando chaves no enclave criptográfico. Média
US-05 Desenvolvedor Mobile Quero que a rota da Sala dos Tesouros seja inacessível via deep link sem a autenticação prévia. Proteção de rota orientada a guardas de estado antes da composição de tela. Baixa

2. Requisitos do Sistema

Requisitos Funcionais (RF)

Requisitos Não-Funcionais (RNF)


3. Diagrama de Casos de Uso

flowchart TD
    Leader([fa:fa-user Líder de Guilda])
    Bio[(fa:fa-fingerprint Sensor Biométrico)]
    Vault[(fa:fa-gem Sala dos Tesouros)]

    subgraph AppGuilda ["🏰 Guilda dos Heróis (mobile-android-kotlin)"]
        UC01["Explorar Lista de Heróis"]
        UC02["Solicitar Acesso ao Cofre"]
        UC03["Disparar BiometricPrompt"]
        UC04["Validar Impressão Digital"]
        UC05["Liberar Sala dos Tesouros"]
    end

    Leader --> UC01
    Leader --> UC02
    UC02 --> UC03
    UC03 --> Bio
    Bio --> UC04
    UC04 -->|Sucesso| UC05
    UC05 --> Vault

4. Matriz de Rastreabilidade (RTM)

ID Requisito História de Usuário Artefato de Código Teste de Aceitação
RF-01 US-01 mobile-android-kotlin/app/.../NavGraph.kt testNavGraphRouteDestinations()
RF-02 US-02 mobile-android-kotlin/app/.../BiometriaManager.kt testCanAuthenticateHardwareCheck()
RF-03 US-02, US-03 mobile-android-kotlin/app/.../BiometriaManager.kt testPromptInfoConfiguration()
RF-04 US-02, US-05 mobile-android-kotlin/app/.../MainActivity.kt testTreasuryAccessRequiresAuth()
RF-05 US-04 mobile-android-kotlin/app/.../BiometriaManager.kt testKeystoreAes256Encryption()

🛠️ Implementação Guiada (BiometriaManager.kt)

ℹ️ O trecho de código que ficava aqui não correspondia ao código do projeto e foi retirado. Consulte os arquivos em mobile-android-kotlin.


🚀 Como Executar no Laboratório

1. Navegue até a subpasta do projeto

cd catalogo_projetos/android_p11_herois_biometria/mobile-android-kotlin

2. Compile e instale em dispositivo com leitor de digital configurado

./gradlew installDebug

🏁 Matriz de Checkpoints de Conclusão

Checkpoint Meta Técnica Critério de Aceite Status
CP-01 Navigation Compose Grafo de navegação funcional com rotas desacopladas PASS ✅
CP-02 Disponibilidade Biometria BiometricManager identificando suporte do hardware PASS ✅
CP-03 Callback de Autenticação Desbloqueio da tela apenas após sinal positivo do sensor PASS ✅
CP-04 Fallback de Senha PIN do sistema operacional habilitado como alternativa PASS ✅
CP-05 Suíte de Testes Automatizados Testes de unidade e UI Compose aprovados com 100% de sucesso PASS ✅