Skip to Content
React Native16. AnnexesD. Commandes de survie

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 cd inline 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 link

eas — 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