# 📱 Guide de Test Mobile - Geosector App

## 🚀 Configuration Rapide

### 1️⃣ Préparation du Mobile Android

#### Activer le Mode Développeur
```
Paramètres → À propos du téléphone → Tapoter 7 fois sur "Numéro de build"
```

#### Activer les Options de Développement
```
Paramètres → Options pour les développeurs → Activer :
✅ Options pour les développeurs
✅ Débogage USB
✅ Débogage sans fil (pour WiFi)
```

---

## 🔌 Test via USB

### Connexion USB
1. Brancher le téléphone en USB-C
2. Accepter l'autorisation de débogage sur le téléphone

### Commandes Terminal
```bash
# Vérifier la connexion
adb devices
flutter devices

# Lancer l'app (mode debug avec hot reload)
flutter run

# Lancer l'app sur un appareil spécifique
flutter run -d [DEVICE_ID]
```

---

## 📶 Test via WiFi (Sans Fil)

### Configuration sur le Mobile
1. **Activer le Débogage sans fil** dans Options pour les développeurs
2. **Entrer dans "Débogage sans fil"** et noter :
   - Nom de l'appareil (ex: Pi25)
   - Adresse IP et port (ex: 192.168.1.103:33503)

### Première Connexion (avec code d'association)
```bash
# Si première connexion, associer avec code
# Sur mobile : "Associer l'appareil avec un code d'association"
adb pair [IP:PORT_ASSOCIATION] [CODE_6_CHIFFRES]
# Exemple : adb pair 192.168.1.103:37953 123456
```

### Connexion Standard
```bash
# Connecter via WiFi
adb connect [IP:PORT]
# Exemple : adb connect 192.168.1.103:33503

# Vérifier la connexion
adb devices
flutter devices

# Lancer l'app
flutter run -d [IP:PORT]
# Exemple : flutter run -d 192.168.1.103:33503
```

---

## 🎯 Modes de Compilation

### Mode Debug (Développement)
```bash
# Avec hot reload, logs complets, banner DEBUG
flutter run
flutter run -d [DEVICE_ID]
```

**Raccourcis pendant l'exécution :**
- `r` : Hot reload (rechargement rapide)
- `R` : Hot restart (redémarrage complet)
- `p` : Afficher le widget tree
- `o` : Basculer Android/iOS preview
- `q` : Quitter

### Mode Release (Performance)
```bash
# Optimisé, rapide, sans debug
flutter run --release
flutter run -d [DEVICE_ID] --release
```

### Mode Profile (Analyse)
```bash
# Pour profiler les performances
flutter run --profile
flutter run -d [DEVICE_ID] --profile
```

---

## 📦 Build et Installation

### Créer l'APK
```bash
# APK standard
flutter build apk

# APK optimisé pour release
flutter build apk --release

# APK avec obfuscation
flutter build apk --release --obfuscate --split-debug-info=debug_info

# APK split par architecture (plus petit)
flutter build apk --split-per-abi
```

### Installer l'APK
```bash
# Installer sur appareil connecté
flutter install
flutter install -d [DEVICE_ID]

# Installer un APK spécifique
adb install build/app/outputs/flutter-apk/app-release.apk
```

### Bundle pour Play Store
```bash
flutter build appbundle --release
```

---

## 🔧 Commandes Utiles

### Gestion des Appareils
```bash
# Lister tous les appareils
flutter devices

# Infos détaillées ADB
adb devices -l

# Déconnecter un appareil WiFi
adb disconnect [IP:PORT]

# Redémarrer ADB
adb kill-server
adb start-server
```

### Nettoyage et Réparation
```bash
# Nettoyer le projet
flutter clean

# Réinstaller les dépendances
flutter pub get

# Régénérer les fichiers
flutter pub run build_runner build --delete-conflicting-outputs

# Vérifier l'installation Flutter
flutter doctor
```

### Logs et Débogage
```bash
# Voir les logs du téléphone
adb logcat

# Logs Flutter uniquement
flutter logs

# Capturer une capture d'écran
adb shell screencap -p /sdcard/screenshot.png
adb pull /sdcard/screenshot.png
```

---

## 📱 Tests sur le Mobile

### Vérifications Visuelles
- [ ] **AppBar** : Logo Geosector + Logo Amicale (si disponible)
- [ ] **Navigation** :
  - Admin : Bordure rouge, menu sélectionné en rouge/gras
  - User : Bordure verte, menu sélectionné en vert/gras
- [ ] **Menu Mobile** : Icônes uniquement en bas (sans texte)
- [ ] **Responsive** : Adaptation portrait/paysage

### Tests Fonctionnels
- [ ] Connexion/Déconnexion
- [ ] Navigation entre les pages
- [ ] Formulaires et validations
- [ ] Synchronisation des données
- [ ] Mode hors-ligne

### Performance
- [ ] Temps de chargement
- [ ] Fluidité du scroll
- [ ] Réactivité des boutons
- [ ] Consommation mémoire

---

## 🆘 Résolution de Problèmes

### Appareil Non Détecté
```bash
# Vérifier les drivers USB
adb devices

# Relancer ADB
adb kill-server
adb start-server

# Vérifier Flutter
flutter doctor -v
```

### Erreur de Connexion WiFi
```bash
# Vérifier le réseau (même WiFi PC et mobile)
ping [IP_MOBILE]

# Réassocier l'appareil
adb pair [IP:PORT] [CODE]

# Forcer la reconnexion
adb disconnect
adb connect [IP:PORT]
```

### Build Échoué
```bash
# Nettoyer et reconstruire
flutter clean
flutter pub get
flutter run
```

---

## 💡 Tips & Astuces

1. **Gardez le téléphone déverrouillé** pendant les tests
2. **Désactivez l'économie d'énergie** pour éviter les déconnexions
3. **Utilisez le mode Release** pour tester les vraies performances
4. **Activez "Rester éveillé"** dans Options développeur
5. **WiFi stable** : Préférez le 5GHz au 2.4GHz si disponible

---

## 📊 Exemple de Session Type

```bash
# 1. Connexion WiFi
adb connect 192.168.1.103:33503

# 2. Vérification
flutter devices

# 3. Lancement en debug
flutter run -d 192.168.1.103:33503

# 4. Tests et hot reload (touche r)

# 5. Test performance
flutter run -d 192.168.1.103:33503 --release

# 6. Build final
flutter build apk --release
```

---

## 📝 Notes Spécifiques Geosector

- **Environnement** : L'app détecte automatiquement DEV/REC/PROD
- **Logos** : Le logo amicale s'affiche si disponible en base64
- **Rôles** : Admin (rouge) vs User (vert) dans l'interface
- **Cache** : Utilise Hive pour le stockage local

---

*Guide créé pour Geosector v3.0.6 - Flutter 3.32+*