# đŸ“± Guide de DĂ©veloppement Android pour GeoSector ## 🚀 Configuration initiale ### PrĂ©requis sur Debian/Ubuntu ```bash # Installer les outils Android de base sudo apt update sudo apt install adb fastboot android-tools-adb android-tools-fastboot # Pour le support MTP (transfert de fichiers) sudo apt install mtp-tools jmtpfs gvfs-backends # VĂ©rifier l'installation adb --version ``` ### Configuration du tĂ©lĂ©phone Android 1. **Activer le mode dĂ©veloppeur** : - Aller dans `ParamĂštres > À propos du tĂ©lĂ©phone` - Taper 7 fois sur `NumĂ©ro de build` 2. **Activer le dĂ©bogage USB** : - Aller dans `ParamĂštres > Options pour dĂ©veloppeurs` - Activer `DĂ©bogage USB` - Activer `Installation via USB` (si disponible) 3. **Connexion USB** : - Brancher le tĂ©lĂ©phone - Autoriser le dĂ©bogage sur le tĂ©lĂ©phone (popup) - Choisir "Toujours autoriser depuis cet ordinateur" ## 🔍 Commandes ADB essentielles ### VĂ©rification de la connexion ```bash # Lister les devices connectĂ©s adb devices # Voir les infos dĂ©taillĂ©es du device adb shell getprop | grep -E "model|version|manufacturer" # VĂ©rifier si le device est en USB lsusb | grep -i samsung ``` ### Installation et gestion des APK ```bash # Installer un APK adb install app-release.apk # Installer en Ă©crasant la version existante adb install -r app-release.apk # Installer un APK debug (avec permission de debug) adb install -t app-debug.apk # DĂ©sinstaller une application adb uninstall fr.geosector.app3025 # Lister les packages installĂ©s adb shell pm list packages | grep geosector # Voir le chemin d'installation d'une app adb shell pm path fr.geosector.app3025 ``` ## 📊 Logs et dĂ©bogage en temps rĂ©el ### Voir TOUS les logs du tĂ©lĂ©phone ```bash # Logs en temps rĂ©el (CTRL+C pour arrĂȘter) adb logcat # Logs avec filtre sur votre app uniquement adb logcat | grep -i geosector # Logs Flutter uniquement (trĂšs utile !) adb logcat | grep -E "flutter|dart" ``` ### Logs Flutter spĂ©cifiques (RECOMMANDÉ) ```bash # MĂ©thode 1: Via Flutter directement (le plus pratique) flutter logs # MĂ©thode 2: Filtrer par tag Flutter adb logcat -s flutter # MĂ©thode 3: Logs avec niveau de verbositĂ© adb logcat "*:E" # Erreurs uniquement adb logcat "*:W" # Warnings et erreurs adb logcat "*:I" # Info, warnings et erreurs ``` ### Logs avec timestamps et couleurs ```bash # Avec timestamp adb logcat -v time | grep -i geosector # Format dĂ©taillĂ© avec PID adb logcat -v threadtime | grep -i geosector # Sauvegarder les logs dans un fichier adb logcat -d > logs_android.txt ``` ### Nettoyer les logs ```bash # Effacer le buffer de logs adb logcat -c # Puis relancer pour voir uniquement les nouveaux logs adb logcat | grep -i geosector ``` ## 🐛 DĂ©bogage avancĂ© ### Lancer l'application depuis ADB ```bash # DĂ©marrer l'application adb shell monkey -p fr.geosector.app3025 -c android.intent.category.LAUNCHER 1 # Ou avec am (Activity Manager) adb shell am start -n fr.geosector.app3025/.MainActivity # Forcer l'arrĂȘt de l'application adb shell am force-stop fr.geosector.app3025 ``` ### Capturer des screenshots ```bash # Prendre une capture d'Ă©cran adb shell screencap /sdcard/screenshot.png adb pull /sdcard/screenshot.png ./screenshot.png # Enregistrer une vidĂ©o (appuyer CTRL+C pour arrĂȘter) adb shell screenrecord /sdcard/demo.mp4 adb pull /sdcard/demo.mp4 ./demo.mp4 ``` ### Informations systĂšme ```bash # Voir l'utilisation mĂ©moire adb shell dumpsys meminfo fr.geosector.app3025 # Voir les permissions de l'app adb shell dumpsys package fr.geosector.app3025 | grep permission # Version d'Android adb shell getprop ro.build.version.release # Taille de l'Ă©cran adb shell wm size # DensitĂ© de l'Ă©cran adb shell wm density ``` ## đŸ”„ Hot Reload avec Flutter ### DĂ©veloppement en temps rĂ©el ```bash # Lancer l'app en mode debug avec hot reload flutter run # Une fois lancĂ©, utiliser ces commandes : # r - Hot reload (rechargement rapide) # R - Hot restart (redĂ©marrage complet) # h - Afficher l'aide # q - Quitter # p - Afficher/masquer la grille de construction # o - Basculer iOS/Android ``` ### Lancer sur un device spĂ©cifique ```bash # Lister les devices disponibles flutter devices # Lancer sur un device spĂ©cifique flutter run -d R3CY409BQBZ # Remplacer par votre device ID # Lancer en mode release pour tester les performances flutter run --release ``` ## đŸ—ïž Build et compilation ### GĂ©nĂ©rer les APK ```bash # APK debug (non signĂ©, pour tests) flutter build apk --debug # APK release (signĂ©, optimisĂ©) flutter build apk --release # APK sĂ©parĂ©s par architecture (plus petits) flutter build apk --split-per-abi # App Bundle pour Google Play Store flutter build appbundle --release ``` ### Analyser la taille de l'APK ```bash # Voir la taille dĂ©taillĂ©e de l'APK flutter build apk --analyze-size # Utiliser l'outil APK Analyzer d'Android java -jar ~/Android/Sdk/tools/bin/apkanalyzer.jar apk summary app-release.apk ``` ## 🔧 RĂ©solution de problĂšmes courants ### Device non dĂ©tectĂ© ```bash # RedĂ©marrer le serveur ADB adb kill-server adb start-server adb devices # VĂ©rifier les rĂšgles udev (Linux) ls -la /etc/udev/rules.d/ | grep android # Ajouter les permissions utilisateur sudo usermod -aG plugdev $USER # Puis se dĂ©connecter/reconnecter ``` ### Permissions Android ```bash # Accorder une permission manuellement adb shell pm grant fr.geosector.app3025 android.permission.ACCESS_FINE_LOCATION # RĂ©voquer une permission adb shell pm revoke fr.geosector.app3025 android.permission.ACCESS_FINE_LOCATION # Lister toutes les permissions adb shell pm list permissions -g ``` ### ProblĂšme de signature ```bash # VĂ©rifier la signature de l'APK jarsigner -verify -verbose -certs app-release.apk # Voir le certificat keytool -printcert -jarfile app-release.apk ``` ## 📩 Transfert de fichiers ### Via ADB (recommandĂ© pour dev) ```bash # Envoyer un fichier vers le tĂ©lĂ©phone adb push fichier.txt /sdcard/Download/ # RĂ©cupĂ©rer un fichier du tĂ©lĂ©phone adb pull /sdcard/Download/fichier.txt ./ # Lister les fichiers adb shell ls -la /sdcard/Download/ ``` ### Via MTP (pour Thunar) ```bash # Monter le tĂ©lĂ©phone jmtpfs ~/phone # DĂ©monter fusermount -u ~/phone # Ou redĂ©marrer Thunar thunar -q && thunar & ``` ## 🎯 Commandes utiles pour GeoSector ### Logs spĂ©cifiques Ă  l'application ```bash # Voir les erreurs de l'API adb logcat | grep -E "ApiService|ApiException" # Voir les opĂ©rations Hive (base de donnĂ©es locale) adb logcat | grep -i hive # Voir les erreurs de gĂ©olocalisation adb logcat | grep -E "geolocator|location" # Tout voir pour GeoSector adb logcat | grep -E "geosector|flutter" --color=always ``` ### Script de dĂ©ploiement rapide CrĂ©er un fichier `deploy-android.sh` : ```bash #!/bin/bash echo "🚀 DĂ©ploiement sur Android..." # Nettoyer et compiler flutter clean flutter pub get flutter build apk --release # Installer sur le device adb install -r build/app/outputs/flutter-apk/app-release.apk # Lancer l'application adb shell am start -n fr.geosector.app3025/.MainActivity # Afficher les logs echo "📊 Logs en temps rĂ©el (CTRL+C pour arrĂȘter)..." adb logcat | grep -E "geosector|flutter" --color=always ``` Rendre exĂ©cutable : `chmod +x deploy-android.sh` ## 🏁 Workflow de dĂ©veloppement recommandĂ© 1. **Brancher le tĂ©lĂ©phone** et vĂ©rifier : `adb devices` 2. **Lancer en mode debug** : `flutter run` 3. **Modifier le code** et appuyer sur `r` pour hot reload 4. **Voir les logs** dans un autre terminal : `flutter logs` 5. **Tester la release** : `flutter run --release` 6. **Compiler l'APK final** : `flutter build apk --release` 7. **Installer** : `adb install -r app-release.apk` ## 💡 Tips & Tricks - **Performance** : Toujours tester en mode `--release` pour juger les vraies performances - **Logs** : Garder un terminal avec `flutter logs` ouvert en permanence pendant le dev - **Hot Reload** : Fonctionne uniquement en mode debug, pas en release - **Wi-Fi Debug** : Possible avec `adb connect :5555` aprĂšs configuration - **Multi-devices** : Flutter peut dĂ©ployer sur plusieurs devices simultanĂ©ment --- *Guide créé pour le projet GeoSector - Mise Ă  jour : AoĂ»t 2025*