Skip to Content
React Native20. QuizQuiz 4 — Builds & distribution

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.