Annexe D — Les commandes de survie
La liste annotée — chaque commande avec son moment d’usage. PowerShell : rappel, le cwd se réinitialise à chaque commande — toujours
cdinline si besoin.
npx expo — le quotidien
npx expo start # Metro + QR (le "next dev")
npx expo start -c # idem, cache vidé — LE premier réflexe de débogage
npx expo start --tunnel # via les serveurs Expo (WiFi hostile)
# Touches dans le terminal Metro : r=reload · m=menu dev · j=DevTools · a=émulateur · s=switch Go/dev build
npx expo install <lib> # ajout aligné sur le SDK (JAMAIS pnpm add pour du natif)
npx expo install --fix # réaligne toutes les versions (après montée de SDK)
npx expo install -- --dev <x> # dépendance de dev via expo install
npx expo-doctor # le bilan de santé du projet (versions, config)
npx expo prebuild --platform android # générer android/ (inspection)
npx expo prebuild --clean # régénérer de zéro (le reset natif)
npx expo run:android # prebuild + gradle + install + launch (build local debug)
npx expo export --platform web # export statique web (démo)
npx uri-scheme open "drill://quiz?theme=php" --android # tester un deep linkeas — builds & distribution
eas login # une fois
eas build:configure # créer eas.json (une fois par projet)
eas build --profile development --platform android # le dev build (cloud)
eas build --profile preview --platform android # l'APK de prod (voie perso)
eas build --profile preview --platform android --local # idem SUR VOTRE MACHINE (illimité)
eas build --profile production --platform android # l'AAB du Play Store
eas build:list # historique + liens de téléchargement
eas update --channel preview -m "message" # OTA voie perso
eas update --channel production -m "message" # OTA Store
npx sentry-expo-upload-sourcemaps dist # ← le compagnon de CHAQUE update (si Sentry)
eas submit --platform android --latest # envoyer le dernier build à la Play Console
eas credentials # inspecter/télécharger le keystore (le SAUVEGARDER)adb — l’appareil
adb devices # qui est connecté ?
adb install -r .\app.apk # installer/mettre à jour (-r = replace)
adb install -d .\app.apk # autoriser le downgrade (DEV uniquement)
adb uninstall com.alex.drill # désinstaller (données comprises !)
adb shell pm clear com.alex.drill # remettre l'app à zéro (données, permissions)
adb shell am start -n com.alex.drill/.MainActivity # lancer l'app
adb logcat *:S ReactNative:V ReactNativeJS:V # les logs RN seulement
adb logcat -c # vider le buffer de logs
# Metro par câble USB (le WiFi hostile, solution définitive) :
adb reverse tcp:8081 tcp:8081
# adb par WiFi (Android 11+) :
adb pair <ip>:<port-pairing> # code affiché sur le téléphone
adb connect <ip>:<port-connexion>
# Captures :
adb exec-out screencap -p > screen.png # screenshot
adb shell screenrecord /sdcard/demo.mp4 # vidéo (Ctrl+C pour stopper, puis pull)gradle — sous le capot (depuis android/)
cd android
.\gradlew assembleDebug # APK debug
.\gradlew assembleRelease # APK release (signature à gérer — préférer eas --local)
.\gradlew bundleRelease # AAB
.\gradlew clean # nettoyer les caches de build
# Sortie : android/app/build/outputs/apk/<variant>/Vérifications & divers
keytool -printcert -jarfile app.apk # QUI a signé cet APK (empreinte SHA-1)
pnpm tsc --noEmit # le type-check complet (Metro ne le fait PAS)
pnpm test # Jest
maestro test .maestro/ # les flows E2E
$env:APP_VARIANT = 'production' # la variante du terminal courant (à vérifier avant build !)Les rituels assemblés
# ── Release JS (2 min) ──
pnpm tsc --noEmit; pnpm test
eas update --channel preview -m "fix: …"
npx sentry-expo-upload-sourcemaps dist
# ── Release native perso (~20 min) ── (bump version dans app.config.ts d'abord !)
$env:APP_VARIANT = 'production'
eas build --profile preview --platform android --local
maestro test .maestro/
adb install -r .\build-*.apk
git tag v1.x.0; git push --tags
# ── Diagnostic de base (dans l'ordre) ──
npx expo start -c
npx expo-doctor
# "mon dev build est-il à jour ?" → rebuild si un module natif a bougé
adb shell pm clear com.alex.drill # reproduire sur état vierge
npx expo prebuild --clean # reset natif complet