Skip to content

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