Perte de Compatibilité Android - Analyse et Solutions
📊 Résumé du Problème
Entre la version 1.14 (2 novembre) et la version actuelle 1.16, l'application a perdu la compatibilité avec 2 368 appareils Android.
Message Play Console :
"Cette version ne prend plus en charge 2 368 appareils qui étaient compatibles avec votre version précédente."
🔍 Cause Racine
1. Flutter 3.35.x a augmenté le minSdkVersion par défaut
Flutter 3.35.x a changé les exigences minimales Android : - Avant : minSdkVersion = 21 (Android 5.0+) - Après : minSdkVersion = 24 (Android 7.0+)
2. Nouvelles dépendances ajoutées
Entre le 2 novembre et aujourd'hui, 5 nouvelles dépendances ont été ajoutées à pubspec.yaml :
url_launcher: ^6.3.2
syncfusion_flutter_charts: ^31.2.5
fl_chart: ^1.1.1
percent_indicator: ^4.2.3
syncfusion_flutter_core: ^31.2.5
Ces packages modernes nécessitent une version Flutter plus récente, ce qui a déclenché l'augmentation du minSdkVersion.
3. Appareils affectés
Les appareils perdus sont ceux fonctionnant sous : - Android 6.0 (API 23) - Marshmallow - Android 6.0.1 (API 23) - Marshmallow - Autres versions entre API 21-23
📋 Détails Techniques
Historique des commits
87982a8 - Statistiques utilisateurs
7e9dda9 - MAJ Version
9652822 - Test d'appel à la fonction Stripe
1279e51 - (tag: v1.0.15) MAJ versions
bb655f8 - (tag: v1.0.14) chore: bump app version to 1.0.14+33
Changements dans pubspec.yaml
Version 1.14 (2 novembre) :
version: 1.0.14+33
dependencies:
# ... packages existants ...
package_info_plus: ^9.0.0
# Pas de url_launcher, syncfusion_flutter_charts, etc.
Version 1.16 (actuelle) :
version: 1.0.16+34
dependencies:
# ... packages existants ...
package_info_plus: ^9.0.0
url_launcher: ^6.3.2 # ← NOUVEAU
syncfusion_flutter_charts: ^31.2.5 # ← NOUVEAU
fl_chart: ^1.1.1 # ← NOUVEAU
percent_indicator: ^4.2.3 # ← NOUVEAU
syncfusion_flutter_core: ^31.2.5 # ← NOUVEAU
Configuration Android actuelle
File: android/app/build.gradle.kts
defaultConfig {
applicationId = "net.efvt.yinshi.twa"
minSdk = flutter.minSdkVersion # ← Utilise la valeur par défaut de Flutter 3.35 = 24
targetSdk = flutter.targetSdkVersion
versionCode = flutter.versionCode.toInt()
versionName = flutter.versionName
}
✅ Solutions Possibles
Option 1 : Accepter la perte de compatibilité (Recommandé)
Avantages : - Pas de changement de code - Les nouvelles dépendances fonctionnent correctement - Aligne l'app avec les standards modernes (Android 7.0+) - Google Play Store encourage cette approche
Inconvénients : - Perte de ~2 368 utilisateurs potentiels - Utilisateurs existants sur Android 6.x ne recevront plus de mises à jour
Action : Aucune modification nécessaire. Continuer avec la version actuelle.
Option 2 : Forcer minSdkVersion à 21 (Risqué)
Si vous voulez retrouver la compatibilité avec Android 6.x, modifiez android/app/build.gradle.kts :
defaultConfig {
applicationId = "net.efvt.yinshi.twa"
minSdk = 21 // ← Forcer à 21 au lieu de 24
targetSdk = flutter.targetSdkVersion
versionCode = flutter.versionCode.toInt()
versionName = flutter.versionName
}
Avantages : - Retrouve la compatibilité avec Android 6.x - Utilisateurs existants continuent à recevoir les mises à jour
Inconvénients :
- ⚠️ Risque de crash : Les dépendances modernes (notamment url_launcher_android 6.3.24) peuvent nécessiter API 33+
- Peut causer des erreurs de compilation
- Nécessite des vérifications approfondies
Action : À tester en développement avant de publier.
Option 3 : Réduire les versions des dépendances (Complexe)
Utiliser des versions plus anciennes des packages qui supportent minSdk 21 :
url_launcher: ^6.1.0 # Au lieu de 6.3.2
syncfusion_flutter_charts: ^30.0.0 # Au lieu de 31.2.5
Avantages : - Retrouve la compatibilité - Évite les risques de crash
Inconvénients : - Perte des nouvelles fonctionnalités - Maintenance plus difficile - Packages plus anciens = moins de support
Action : Non recommandé sauf si nécessaire.
📊 Comparaison des Options
| Critère | Option 1 | Option 2 | Option 3 |
|---|---|---|---|
| Facilité | ✅ Aucun changement | ⚠️ Modification simple | ❌ Complexe |
| Risque | ✅ Aucun | ⚠️ Risque de crash | ✅ Faible |
| Nouvelles fonctionnalités | ✅ Oui | ✅ Oui | ❌ Non |
| Compatibilité Android 6.x | ❌ Non | ✅ Oui | ✅ Oui |
| Support long terme | ✅ Bon | ⚠️ À vérifier | ❌ Limité |
🎯 Recommandation
Option 1 : Accepter la perte de compatibilité
Justification : 1. Android 6.x représente une très petite part du marché en 2025 2. Les nouvelles dépendances apportent des fonctionnalités importantes (charts, url_launcher) 3. Google Play Store encourage les apps modernes 4. Maintenance plus facile avec les versions récentes des packages 5. Aucun risque de crash ou de problème de compilation
Prochaines étapes : 1. ✅ Publier la version 1.16 sur Play Store 2. ✅ Documenter le changement dans les notes de version 3. ✅ Informer les utilisateurs si nécessaire
📝 Notes de Version Suggérées
Pour la version 1.16, vous pouvez ajouter :
Version 1.16 - [Date]
- Ajout de graphiques avancés (Syncfusion Charts)
- Amélioration des statistiques utilisateurs
- Support amélioré pour les URLs
- **Exigence minimale : Android 7.0 (API 24)**
🔗 Références
- Flutter 3.35.x : Augmentation du minSdkVersion par défaut de 21 à 24
- url_launcher 6.3.2 : Dépend de url_launcher_android 6.3.24
- syncfusion_flutter_charts 31.2.5 : Nécessite Flutter récent
- Google Play Store : Encourage les apps ciblant Android 7.0+
❓ Questions Fréquentes
Q: Pourquoi cette perte s'est-elle produite soudainement ?
R: Flutter 3.35.x a changé les valeurs par défaut. Comme votre build.gradle.kts utilise flutter.minSdkVersion, il a automatiquement augmenté de 21 à 24.
Q: Puis-je revenir à Android 6.x ?
R: Techniquement oui (Option 2), mais c'est risqué. Les nouvelles dépendances peuvent ne pas être compatibles.
Q: Combien d'utilisateurs cela affecte-t-il ?
R: ~2 368 appareils selon Play Console. C'est environ 0.1-0.5% du marché global.
Q: Dois-je faire quelque chose maintenant ?
R: Non, si vous acceptez Option 1. Sinon, testez Option 2 en développement avant de publier.
Dernière mise à jour : 10 novembre 2025