Skip to content

AtlasKronos v1.0.1 — Correção crítica: importação de modelo via SAF

Pre-release
Pre-release

Choose a tag to compare

@Kronos1027 Kronos1027 released this 07 Aug 06:18

🤖 AtlasKronos v1.0.1

🐛 Problema crítico corrigido

Problema reportado: No Android 13+, o Scoped Storage bloqueia totalmente o acesso à pasta /Android/data/com.kronos1027.atlaskronos.debug/files/ — nenhum app de arquivos (Termux, ZArchiver) consegue copiar o modelo para lá. Era impossível colocar o modelo manualmente.

Causa técnica:

  • Isolamento em Sandbox: a pasta /Android/data/ é privada — só o próprio app tem acesso
  • Proteção Anti-Malware: Google bloqueou o acesso para evitar que apps leiam dados de outros
  • Bloqueio do Seletor do Sistema (SAF): a partir do Android 13, a permissão manual de sobreposição foi desativada no kernel

✨ Solução: importação nativa via SAF

O app agora tem um botão 'Selecionar modelo (.gguf)' que abre o seletor de arquivos do sistema (Storage Access Framework). O usuário baixa o modelo em Downloads (como faria normalmente), abre o AtlasKronos, toca no botão, escolhe o arquivo, e o próprio app copia o conteúdo para sua pasta interna onde tem acesso total.

📋 Como usar (passo a passo)

  1. Baixe o modelo (380MB) no navegador do celular:

    • URL: huggingface.co/bartowski/Qwen2.5-0.5B-Instruct-GGUF/resolve/main/Qwen2.5-0.5B-Instruct-Q4_K_M.gguf
    • O arquivo vai pra pasta Download
  2. Instale o APK v1.0.1 (por cima da v1.0.0 se já tinha instalado — não perde dados)

  3. Abra o AtlasKronos — vai aparecer uma tela de boas-vindas com:

    • Instruções claras (com o link acima)
    • Botão grande '📁 Selecionar modelo (.gguf)'
  4. Toque no botão — o seletor de arquivos do Android abre

  5. Navegue até Downloads e selecione o arquivo .gguf baixado

  6. Aguarde a cópia — barra de progresso mostra percentual + MB copiados (~10-30s)

  7. Pronto! O app mostra '✓ Modelo importado!' e abre a tela de chat

🔧 Melhorias técnicas

  • LlamaEngine.importModelFromUri() — copia via ContentResolver com buffer 64KB
  • InitCallback.onModelMissing() — notifica UI pra mostrar overlay de importação
  • Progresso em tempo real (percentual + bytes) durante a cópia
  • Aceita qualquer arquivo .gguf (não só nome fixo) — funciona com outros modelos
  • Deleta modelos antigos ao importar novo (mantém só 1)
  • takePersistableUriPermission() — pode re-ler o URI se necessário
  • Instruções claras com link clicável dentro do app

⚠️ Mesmas limitações da v1.0.0 (não testadas em device)

  • ❌ Não foi possível testar em emulador (sem KVM no ambiente)
  • ❌ Não foi possível testar em celular físico (sem ADB device conectado)
  • ✅ Build do APK: SUCCESSFUL em 22s
  • ✅ 13 libs nativas + 2 assets empacotados corretamente
  • ✅ Inferência do llama.cpp + Qwen2.5-0.5B validada no Linux x86_64 (25 tokens/s)
  • ✅ 5/5 testes de function-calling passaram no Linux
  • ✅ 24/24 testes unitários JVM passaram

Sobre a meta de 500MB RAM: continua não atingida (estimativa ~650MB). Trade-off documentado no README.

📥 Download

Baixe o AtlasKronos-v1.0.1-debug.apk abaixo (200MB).

💜 Créditos

Feito por Darlan (NATSKY)@Kronos1027