alterações em telas
This commit is contained in:
89
NOTAS-EMULADOR.md
Normal file
89
NOTAS-EMULADOR.md
Normal file
@@ -0,0 +1,89 @@
|
||||
# Notas: Execução do TatuChat em Emulador Android
|
||||
|
||||
Data: 2026-09-12
|
||||
|
||||
## Objetivo
|
||||
|
||||
Executar o projeto TatuChat (Flutter) em um emulador Android com janela visível.
|
||||
|
||||
## Ambiente
|
||||
|
||||
| Item | Valor |
|
||||
|------|-------|
|
||||
| OS | Linux (Freedesktop SDK 25.08, Flatpak runtime) |
|
||||
| Flutter | 3.47.3 (Dart 3.13.3) |
|
||||
| Android SDK | /home/welton/Android/Sdk (versão 37, emulator 37.1.11) |
|
||||
| JDK | 17 (Temurin, via JAVA_HOME) |
|
||||
| Imagem de sistema | android-36, google_apis, x86_64 |
|
||||
| Sessão | Terminal integrado do VSCodium (sandbox Flatpak `com.vscodium.codium`) |
|
||||
|
||||
## Problemas encontrados e soluções
|
||||
|
||||
### 1. Nenhum AVD disponível inicialmente
|
||||
Não havia AVDs criados. Imagem de sistema `android-36/google_apis/x86_64` já instalada.
|
||||
- Criação: `avdmanager create avd -n tatuchat -k "system-images;android-36;google_apis;x86_64" -d pixel_7`
|
||||
- **Atenção:** `avdmanager` (Java) criou o AVD em `~/.var/app/com.vscodium.codium/config/.android/avd/` (home do sandbox), diferente de `~/.android/avd` que o emulador espera. Corrigido copiando para `~/.android/avd` e ajustando o `path=` nos arquivos `.ini`.
|
||||
|
||||
### 2. Emulador não abre janela dentro do sandbox Flatpak
|
||||
Erro original: `Could not load the Qt platform plugin "xcb"` — o Qt do emulador não tem plugin Wayland e não há display X11 dentro do sandbox.
|
||||
- Solução 1 (provisória): rodar headless com `-no-window` e `QT_QPA_PLATFORM=offscreen`.
|
||||
- Solução 2 (definitiva): rodar o emulador **na sessão do host** (onde `DISPLAY=:0` existe) via `flatpak-spawn --host`, destacando o processo com `setsid` para não ser morto com o terminal.
|
||||
|
||||
### 3. Bug no AndroidManifest que impedia o app de iniciar
|
||||
O projeto é um fork do FluffyChat renomeado para TatuChat. O `namespace` e `applicationId` foram alterados para `chat.fluffy.tatuchat`, **mas**:
|
||||
- `android/app/src/main/kotlin/chat/fluffy/fluffychat/MainActivity.kt` está no pacote `chat.fluffy.fluffychat`
|
||||
- O manifest usava `android:name=".MainActivity"`, que resolvia para `chat.fluffy.tatuchat.MainActivity` (inexistente)
|
||||
|
||||
Resultado: crash na inicialização com `ClassNotFoundException: chat.fluffy.tatuchat.MainActivity`.
|
||||
|
||||
**Correção aplicada** em `android/app/src/main/AndroidManifest.xml:39`:
|
||||
```xml
|
||||
<!-- antes -->
|
||||
android:name=".MainActivity"
|
||||
<!-- depois -->
|
||||
android:name="chat.fluffy.fluffychat.MainActivity"
|
||||
```
|
||||
|
||||
Observação pendente: o `MainActivity.kt` (e o `FcmPushService.kt`, que está com código comentado) ainda vivem no pacote `chat.fluffy.fluffychat`. Uma limpeza futura deveria mover as classes para `chat.fluffy.tatuchat` e limpar as referências relativas do manifest (`.MainActivity`, `.FcmPushService` — este último aponta para classe que nem existe mais).
|
||||
|
||||
## Como rodar o emulador em janela visível
|
||||
|
||||
### Você (terminal normal do host)
|
||||
```bash
|
||||
# iniciar emulador com janela
|
||||
~/Android/Sdk/emulator/emulator -avd tatuchat
|
||||
|
||||
# rodar o app em outro terminal
|
||||
cd ~/Documentos/Projetos/tatuchat
|
||||
flutter run -d emulator-5554
|
||||
```
|
||||
|
||||
### Comandos equivalentes usados daqui (via flatpak-spawn)
|
||||
```bash
|
||||
# encerrar emulador anterior
|
||||
adb emu kill
|
||||
|
||||
# copiar AVD para a pasta padrão (se ainda não foi feito)
|
||||
mkdir -p ~/.android/avd
|
||||
cp -r ~/.var/app/com.vscodium.codium/config/.android/avd/. ~/.android/avd/
|
||||
|
||||
# iniciar emulador na sessão do host (janela visível)
|
||||
flatpak-spawn --host sh -c 'export HOME=/home/welton; unset QT_QPA_PLATFORM; export DISPLAY=:0; setsid /home/welton/Android/Sdk/emulator/emulator -avd tatuchat -gpu swiftshader_indirect -no-boot-anim > /tmp/emu_run.log 2>&1 < /dev/null & echo started'
|
||||
|
||||
# build + instalação manual (quando o hot reload da CLI falha no sandbox)
|
||||
flutter build apk --debug
|
||||
adb install -r build/app/outputs/flutter-apk/app-debug.apk
|
||||
adb shell am start -n chat.fluffy.tatuchat/chat.fluffy.fluffychat.MainActivity
|
||||
```
|
||||
|
||||
## Estado atual
|
||||
|
||||
- Emulador `tatuchat` rodando com janela na sessão do host (boot OK).
|
||||
- App TatuChat instalado e em execução, foco em `chat.fluffy.tatuchat/chat.fluffy.fluffychat.MainActivity`.
|
||||
- Build: `flutter build apk --debug` gera `build/app/outputs/flutter-apk/app-debug.apk`.
|
||||
|
||||
## Observações
|
||||
|
||||
- `flutter run -d emulator-5554` pode falhar com `Error waiting for a debug connection: The log reader stopped unexpectedly` ao rodar a partir do sandbox; nesse caso o APK é instalado normalmente e basta abrir via `adb shell am start`.
|
||||
- O AVD usa imagem `android-36` (compileSdk do projeto é 37) — compatível para execução.
|
||||
- Arquivos de log do emulador no host: `/tmp/emu_run.log`.
|
||||
Reference in New Issue
Block a user