# Shivao Mobile · Capacitor Android (e iOS futuro)

Wrapper Capacitor pra empacotar o Shivao web como app nativo Android (.apk pra sideload, .aab pra Play Store) e iOS no futuro.

**Arquitetura:** o frontend HTML mora em `app/diario-bordo.html` (1 fonte de verdade). Um script (`scripts/sync-html.mjs`) copia pra `server/public/index.html` (Express serve) e `mobile/www/index.html` (Capacitor empacota).

---

## 🛠️ Pré-requisitos (instalar 1 vez)

### Windows (recomendado pra você)

1. **JDK 17+** — Adoptium Temurin é a melhor escolha:
   ```
   winget install EclipseAdoptium.Temurin.17.JDK
   ```
   Verificar: `java -version` deve mostrar `17.x`

2. **Android Studio** — instala SDK + emulador + tudo:
   ```
   winget install Google.AndroidStudio
   ```
   Após abrir, ir em **Tools → SDK Manager** e instalar:
   - Android SDK Platform 34 (Android 14)
   - Android SDK Build-Tools 34.0.0
   - Android SDK Command-line Tools (latest)
   - Android SDK Platform-Tools

3. **Variáveis de ambiente** (Painel de Controle → Sistema → Variáveis de Ambiente):
   - `JAVA_HOME=C:\Program Files\Eclipse Adoptium\jdk-17.0.x` (ajuste path)
   - `ANDROID_HOME=C:\Users\pontu\AppData\Local\Android\Sdk`
   - Adicionar ao PATH: `%JAVA_HOME%\bin`, `%ANDROID_HOME%\platform-tools`

4. Reiniciar terminal. Verificar:
   ```bash
   java -version
   adb --version
   ```

**Tempo total de instalação:** ~30-45 min (download de ~3GB).

---

## 🚀 Build inicial (faz 1 vez)

```bash
cd mobile

# Instala deps Capacitor + plugins
npm install

# Sincroniza HTML do app/ pra mobile/www/
node ../scripts/sync-html.mjs

# Adiciona projeto Android (gera mobile/android/)
npx cap add android

# Sincroniza plugins nativos no projeto Android
npx cap sync android
```

### Permissões Android (editar manualmente após `cap add android`)

Abra `mobile/android/app/src/main/AndroidManifest.xml` e adicione DENTRO do `<manifest>`:

```xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_LOCATION" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

<uses-feature android:name="android.hardware.location.gps" android:required="false" />
<uses-feature android:name="android.hardware.sensor.barometer" android:required="false" />
<uses-feature android:name="android.hardware.sensor.compass" android:required="false" />
```

---

## 🔐 Keystore PERMANENTE (CRÍTICO — gera 1 vez, guarda pra sempre)

```bash
cd mobile/android/app
keytool -genkey -v -keystore shivao-release.keystore -alias shivao -keyalg RSA -keysize 2048 -validity 10000 \
  -dname "CN=Karlao, O=PontualTech, L=Sao Paulo, ST=SP, C=BR"
# Senha forte (mínimo 8 chars). ANOTE em local seguro — perda = perda permanente do app na Play Store.
```

**BACKUP IMEDIATO:**
```bash
cp shivao-release.keystore C:/Users/pontu/Downloads/Shivao-keystore-backup/shivao-release.keystore
echo "Senha keystore: SUA_SENHA_AQUI" >> C:/Users/pontu/Downloads/Shivao-keystore-backup/keystore-passwords.txt
echo "Alias: shivao" >> C:/Users/pontu/Downloads/Shivao-keystore-backup/keystore-passwords.txt
```

E também faça upload em Drive privado, HD externo etc — perdeu = não publica update na Play Store nunca mais.

### Configurar signing no Gradle

Edite `mobile/android/app/build.gradle`, dentro de `android { ... }`:

```gradle
signingConfigs {
    release {
        storeFile file('shivao-release.keystore')
        storePassword System.getenv('SHIVAO_KEYSTORE_PWD') ?: 'SUA_SENHA_AQUI'
        keyAlias 'shivao'
        keyPassword System.getenv('SHIVAO_KEY_PWD') ?: 'SUA_SENHA_AQUI'
    }
}
buildTypes {
    release {
        signingConfig signingConfigs.release
        minifyEnabled false
    }
}
```

---

## 📦 Build do APK (sideload) e AAB (Play Store)

```bash
cd mobile

# Sincroniza última versão do HTML antes de build
npm run sync

# APK assinado pra sideload (~3-5 min primeira vez, ~1 min em rebuilds)
npm run android:build:apk
# Output: mobile/android/app/build/outputs/apk/release/app-release.apk

# AAB pra Play Store (formato preferido)
npm run android:build:aab
# Output: mobile/android/app/build/outputs/bundle/release/app-release.aab
```

---

## 🌐 Alternativa: Build na nuvem (sem instalar nada local)

Se não quiser instalar 3GB de Android Studio:

### Opção A: Codemagic (mais simples)
- 500min grátis/mês, suficiente pra ~10 builds
- Conecta ao Forgejo, push detecta e roda
- Configura assinatura no painel

### Opção B: Container Docker no Coolify (mais self-hosted)
- Subir imagem `mingc/android-build-box` no Coolify
- Cron job ou webhook do Forgejo dispara build
- APK/AAB salvo em volume persistente

Ambas opções: vamos preparar quando você decidir.

---

## 🎮 Submeter Play Store

1. **Conta Google Play Developer:** $25 1× em https://play.google.com/console
2. Após aprovado (~24h), criar novo app:
   - Nome: "Shivao - Diário de Bordo"
   - Categoria: "Maps & Navigation"
   - Idioma: pt-BR
3. **Subir AAB:** Production → Releases → Create new release → upload `app-release.aab`
4. **Conteúdo obrigatório:**
   - Política de privacidade (URL pública — vou criar uma rota `/politica-privacidade` no servidor)
   - Screenshots: mínimo 2 (vou gerar via Playwright se quiser)
   - Ícone 512×512 (vou gerar do icon.svg)
   - Descrição curta (80 chars) e completa
5. **Content rating:** preencher questionário (~5min)
6. **Pricing:** Free (cobrança vai por dentro do app via Asaas, não Google IAP — economia de 30%)
7. **Submit pra review:** Google revisa em 1-7 dias

---

## 📱 iOS (FASE 4 futura)

Requer:
- Mac (mini M4 ~R$5k mais barato)
- Apple Developer Program $99/ano
- Xcode

```bash
npx cap add ios
npx cap sync ios
npx cap open ios  # abre Xcode
# Build Archive → Distribute → App Store Connect
```

---

## 🐛 Troubleshooting

**`adb: command not found`** — adicione `%ANDROID_HOME%\platform-tools` ao PATH

**`SDK location not found`** — crie `mobile/android/local.properties`:
```
sdk.dir=C:\\Users\\pontu\\AppData\\Local\\Android\\Sdk
```

**Build muito lento** — primeiro build baixa Gradle + dependências (~500MB). Próximos builds usam cache.

**APK muito grande** — habilitar minify em `build.gradle`:
```gradle
buildTypes.release.minifyEnabled true
buildTypes.release.shrinkResources true
```
