Que fait Vérification de version (Release Check) ?
Vous aidez un développeur Flutter à publier une version qui ne sera pas rejetée par Google Play ou l'App Store. Soyez concret : nommez le fichier et la modification exacte pour chaque problème.
Étape 1 : exécuter le précontrôle déterministe
Depuis la racine du projet Flutter, exécutez :
bash "${CLAUDE_PLUGIN_ROOT}/scripts/preflight.sh" $ARGUMENTS
Le script affiche des lignes OK / WARN / FAIL regroupées par section (Version, Changelog, Analyse statique, Tests, Reliquats de débogage, Android, iOS) et se termine avec le code 1 en cas de FAIL. Cela peut prendre une minute lorsque les tests s'exécutent. Si l'utilisateur est clairement en pleine phase de développement et souhaite seulement un aperçu rapide, passez --skip-tests.
Étape 2 : enquêter sur chaque FAIL et WARN
Pour chaque élément, ouvrez le fichier nommé par le script et confirmez le constat avant de le signaler. Corrections courantes :
| Constat | Correction |
|---|---|
| La version n'a pas de numéro de build | Changez version: 1.2.0 en version: 1.2.0+1 dans pubspec.yaml. |
| Un tag existe déjà pour cette version | Exécutez la compétence bump-version. |
com.example applicationId ou bundle id | Utilisez flutter pub run change_app_package_name:main com.votresociete.app ou modifiez android/app/build.gradle(.kts) et les trois entrées PRODUCT_BUNDLE_IDENTIFIER dans ios/Runner.xcodeproj/project.pbxproj. |
| Signature de version avec une clé de débogage | Ajoutez le chargement de key.properties et un signingConfig de type release ; voir references/android-signing.md. |
key.properties ou *.jks suivis par git | Ajoutez-les à .gitignore, puis git rm --cached <fichier> ; changez le mot de passe du keystore si le dépôt est public. |
Absence de PrivacyInfo.xcprivacy | Créez ios/Runner/PrivacyInfo.xcprivacy ; modèle dans references/privacy-manifest.md. |
debuggable=true, trafic en clair, URL localhost | Supprimez avant la publication. |
| Erreurs de l'analyseur / échecs des tests | Corrigez-les ; ne suggérez pas de les ignorer. |
Étape 3 : vérifier les éléments que le script ne peut pas détecter
Examinez le projet et considérez :
- SDK cible : Google Play exige que les nouvelles applications et mises à jour ciblent un niveau d'API Android récent (l'exigence de Play correspond approximativement à la version de l'année précédente). Vérifiez
targetSdkdansandroid/app/build.gradle(.kts)ou par défaut de Flutter. - Icône et écran de démarrage de l'application : l'icône Flutter par défaut entraîne un rejet lors de la revue et une désinstallation immédiate de la part des utilisateurs. Vérifiez la configuration de
flutter_launcher_icons/flutter_native_splashou les dossiers mipmap. - Permissions : si le manifeste contient autre chose que INTERNET, suggérez d'exécuter la compétence
permission-audit. - Assets du store : image de fonctionnalité 1024x500 (Play), captures d'écran pour chaque catégorie d'appareil requise, URL de la politique de confidentialité (obligatoire si l'application collecte des données ou demande des permissions sensibles).
- Suppression de compte : les deux stores exigent un chemin de suppression de compte dans l'application si celle-ci prend en charge la création de compte.
- Connexion pour les testeurs : s'il y a un écran de connexion, rappelez à l'utilisateur de fournir un compte de démonstration dans les notes de revue.
Lisez references/store-rejections.md pour la liste complète des motifs de rejet courants et leurs corrections lorsque l'utilisateur demande pourquoi il a été rejeté ou souhaite une revue plus approfondie.
Étape 4 : rapport
Renvoie un rapport court :
- Verdict : PRÊT / PAS PRÊT.
- À corriger impérativement (éléments FAIL, chacun avec un fichier et une modification exacte).
- À corriger si possible (éléments WARN qui comptent pour cette application).
- Commandes suivantes : généralement
flutter build appbundle --releaseetflutter build ipa --release, précédées debump-versionetchangeloglorsque la version a déjà été publiée.
Soyez concis. Ne répétez pas les lignes OK à moins que l'utilisateur ne demande la sortie complète.