# Android

> Do installDebug ao AAB — launcher, início atrasado por permissões, manifesto, status bar e Voltar.

Source: https://crossfly.dev/pt/docs/platforms/android — CrossFly documentation. Full docs as one file: https://crossfly.dev/llms-full.txt

# Android 🤖

## Rodar
```bash
gradlew :android:installDebug
```
O `AndroidLauncher` (um `AndroidApplication`) cria o `Main` via `getMain(canStart)` →
`new Main(canStart, getCommandline())`.

## ⚠️ Início atrasado por permissões
No Android, você normalmente **não** sobe a UI de imediato — pede permissões primeiro. O padrão:
```java
// no launcher: canStart = false → a UI NÃO sobe ainda
initializeForView(getMain(false), config);
// … após o usuário conceder as permissões (callback) …
main.startApp(true);   // agora sim, sobe a UI (delayed = true)
```
Assim, câmera/GPS/Bluetooth já estão autorizados quando a primeira tela aparece (ver
Cap. 4 §4.2).

## Manifesto e permissões
Declare no `AndroidManifest.xml` as permissões dos recursos que usa (câmera, localização, Bluetooth) —
e peça em runtime antes do `startApp(true)`.

## Status bar e densidade
- A **status bar** é considerada no layout (`DeviceConfig.statusbarHeight`).
- **Densidade**: `Screen.scale` reflete o DPI; como você usa `Relative`/frações, a UI já se adapta.

## Botão Voltar
O botão físico **Voltar** é capturado pela app (por padrão faz `hide()` da janela do topo — ver
[A pilha de janelas](/docs/ui/navigation/the-window-stack)).

## Empacotamento
As libs nativas `.so` (incl. `crossfly-lib`) são empacotadas por ABI. Assinatura/AAB e upload na Play
Store: [Build e distribuição](/docs/platforms/building-and-releasing).

## Boas práticas
- **Peça permissões antes** de `startApp(true)` (início atrasado) — evita telas quebradas.
- Teste em densidades/telas variadas; confie no `Relative` para adaptar.

## Erros comuns
- Subir a UI (`canStart=true`) e só então pedir permissão (recurso indisponível na 1ª tela).
- Esquecer a permissão no `AndroidManifest.xml` (o pedido runtime falha silenciosamente).

## Veja também
- [Build e distribuição](/docs/platforms/building-and-releasing)
