Quiz 4 — Builds & distribution (P11-P13)
20 questions · ~15 min
1. Le dev build : un « conteneur » — développez la métaphore du cours.
Réponse
Le conteneur = le binaire natif (modules, config) ; le contenu = le JS servi par Metro. On rebuild le conteneur quand sa liste de courses NATIVE change ; le contenu itère à la vitesse Metro.
2. « Cannot find native module X » : le diagnostic ?
Réponse
Le conteneur est périmé : le JS attend un module natif absent (Expo Go, ou dev build d’avant l’install). → Rebuild.
3. Les trois profils eas.json du cours et leur usage ?
Réponse
development (dev-client, APK), preview (l’APK release de la voie perso, JS embarqué), production (l’AAB du Play Store, autoIncrement).
4. Que fait eas build --local, et pourquoi est-ce la route par défaut du cours ?
Réponse
Le pipeline EAS complet (profils, prebuild, gradle, keystore EAS) sur votre machine : mêmes artefacts que le cloud, sans quota ni file — rapide et illimité.
5. Le contrat CNG en quatre clauses ?
Réponse
android/ dans le .gitignore ; la vérité dans app.config.ts + plugins ; régénérer au doute (—clean) ; ne JAMAIS éditer le généré (effacé au prochain clean).
6. Qu’est-ce qu’un config plugin, et son cas d’usage type ?
Réponse
Une fonction exécutée au prebuild qui modifie les fichiers natifs générés (manifest, gradle) — ex. ajouter une permission/meta-data sans toucher android/.
7. Comment Drill Dev et Drill coexistent-ils sur le même téléphone ?
Réponse
Package names différents (com.alex.drill.dev vs com.alex.drill) via la variante APP_VARIANT dans app.config.ts — identités système distinctes (données, notifs séparées).
8. APK vs AAB : lequel s’installe, lequel va au Store ?
Réponse
L’APK s’installe (sideload, adb) — la voie perso. L’AAB est le colis du Play Store (qui en dérive des APK optimisés) — il ne s’installe pas directement.
9. Les deux conditions d’une mise à jour d’APK par-dessus l’existant ?
Réponse
Même signature (keystore unique local/cloud) et versionCode ≥ l’installé. Sinon : UPDATE_INCOMPATIBLE / VERSION_DOWNGRADE.
10. Que conserve une mise à jour, que détruit une désinstallation ?
Réponse
La mise à jour préserve le sandbox (SQLite, réglages) ; la désinstallation l’efface intégralement — ne jamais conseiller « désinstalle/réinstalle » à la légère.
11. Que passe une OTA EAS Update, que ne passe-t-elle jamais ?
Réponse
Passe : tout le JS + assets bundlés. Jamais : modules natifs, config native (icône, permissions, scheme), montées de SDK — ceux-là = bump version + rebuild + réinstall.
12. Le rôle exact de la runtimeVersion ?
Réponse
Le contrat bundle↔natif : un binaire ne télécharge que les updates de SA runtime. Policy appVersion → chaque changement natif (bump de version) isole les vieux binaires du JS qui les crasherait.
13. Une OTA publiée : quand l’utilisateur la voit-il (comportement par défaut) ?
Réponse
Téléchargée à une ouverture, appliquée au lancement suivant — d’où le « fermer/rouvrir deux fois » du rituel de test (et reloadAsync pour l’immédiat, proposé poliment).
14. Les trois canaux de mise à jour de Drill et leurs vitesses ?
Réponse
Questions : git push (~minutes, CDN). JS : eas update (prochaine ouverture). Natif : rebuild + réinstallation. Chaque changement prend le canal le plus léger.
15. Play App Signing : qui détient quoi ?
Réponse
Google détient l’app signing key (celle des utilisateurs) ; votre keystore devient l’upload key (authentifie les envois, remplaçable en cas de perte).
16. Pourquoi la version Store et l’APK perso ne se mettent-ils pas à jour l’un l’autre ?
Réponse
Signatures différentes (Google vs votre keystore) : deux lignées parallèles — migration = désinstallation (et perte des données locales de l’appareil).
17. La contrainte spécifique aux nouveaux comptes développeur personnels ?
Réponse
Le test fermé obligatoire : ≥ 12 testeurs opt-in pendant 14 jours continus + le questionnaire de production — avant tout accès à la production.
18. Citez quatre motifs de rejet évitables à la review.
Réponse
Data Safety incohérent, politique de confidentialité manquante, permissions injustifiées, métadonnées trompeuses, app cassée sans réseau (le spinner infini).
19. Le staged rollout : le principe et le bouton de sécurité ?
Réponse
Déployer une mise à jour à 10 % → surveiller les vitals → élargir. « Interrompre le rollout » gèle la diffusion (on republie corrigé — pas de reprise).
20. Les deux seuils Android vitals à connaître, et la sanction ?
Réponse
Crash < 1,09 %, ANR < 0,47 % — au-delà : visibilité pénalisée dans la recherche, possibles avertissements sur la fiche.