0 XP
?
Développement Mobile React Native/Publication et déploiement
Avancé60 min50 XP

Objectifs de cette leçon

  • Configurer le build de production
  • Publier sur App Store et Google Play
  • Gérer les mises à jour via OTA

Publication et déploiement 🚀

L'étape finale : publier ton app sur l'App Store et le Play Store ! C'est comme organiser une grande fête d'inauguration pour ton app.


1. Les stores : App Store vs Play Store 🏪

text ' Pour publier sur l'App Store, il te faut : ' 1. Un Mac (ou EAS Build pour compiler dans le cloud) ' 2. Un compte développeur Apple (99€/an) ' 3. Xcode (IDE Apple) ' 4. Un certificat de développement + provisioning profile

' Étapes : ' 1. Créer ton app dans App Store Connect ' 2. Configurer les certificats et identifiants ' 3. Build l'app (Archive dans Xcode) ' 4. Soumettre via Transporter ou Xcode ' 5. Attendre la validation Apple... ``'

# Avec EAS Build (pas besoin de Mac !)
eas build --platform ios --profile production

# Télécharger le fichier .ipa
# Et le soumettre via Transporter (app Mac)

# Ou soumettre directement avec EAS Submit
eas submit --platform ios
``'

---

## 3. Configuration Android 🤖

```text
' Pour publier sur le Play Store :
' 1. Un compte développeur Google (25€)
' 2. Android Studio (optionnel)
' 3. Une clé de signature (keystore)
' 4. Un fichier .aab (Android App Bundle)

' Étapes :
' 1. Créer ton app dans Google Play Console
' 2. Configurer la fiche du store (description, images)
' 3. Signer l'app avec la clé keystore
' 4. Uploader le .aab
' 5. Remplir le questionnaire de classification
' 6. Publier !
``'

```bash
# Avec EAS Build
eas build --platform android --profile production

# Télécharger le fichier .aab
# Uploader sur Google Play Console

# Ou soumettre directement
eas submit --platform android
``'

---

## 4. EAS Build & Submit — la solution Expo ☁️

```text
' EAS = Expo Application Services
' Pas besoin de Mac ni d'Android Studio !
' Tout se fait dans le cloud

' 1. eas build --platform all
'    → Compile ton app sur les serveurs Expo
'    → iOS : retourne un .ipa
'    → Android : retourne un .aab

' 2. eas submit --platform all
'    → Envoie le fichier directement sur les stores !
// eas.json — configuration des builds
{
  "build": {
    "development": {
      "developmentClient": true,
      "distribution": "internal"
    },
    "preview": {
      "distribution": "internal",
      "android": { "buildType": "apk" },
      "ios": { "simulator": true }
    },
    "production": {
      "distribution": "store"  // ← Pour publier
    }
  }
}

// Profil "production" utilisé par : eas build --profile production

5. Mises à jour OTA (Over-The-Air) 🔄

' OTA = mettre à jour l'app SANS passer par les stores !

' Avec Expo Updates :
' 1. Tu modifies du code JavaScript
' 2. npx expo export --platform web
' 3. Les utilisateurs recoivent la mise à jour
'    sans même le savoir !

' ⚠️ Limité au code JavaScript uniquement
' (pas de modules natifs, pas d'icônes, pas de splash screen)

' Parfait pour : corriger un bug, changer un texte, ajouter une fonctionnalité mineure
``'

```bash
# Publier une mise à jour OTA
npx expo export --platform web

# Les utilisateurs existants verront la mise à jour
# au prochain lancement ou rafraîchissement
``'

---

## 6. CI/CD pour mobile 🔄

yaml
# .github/workflows/deploy.yml
name: Deploy to Stores
on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - uses: actions/setup-node@v3
        with:
          node-version: 18

      - run: npm ci

      - run: npm test  # ✅ Les tests passent d'abord

      - name: EAS Build
        run: npx eas build --platform all --profile production --non-interactive
        env:
          EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }}

      - name: EAS Submit iOS
        run: npx eas submit --platform ios --non-interactive
        env:
          EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }}

      - name: EAS Submit Android
        run: npx eas submit --platform android --non-interactive
        env:
          EXPO_TOKEN: ${{ secrets.EXPO_TOKEN }}
``'

---

## 7. Checklist avant publication ✅

```text
' AVANT de publier, vérifie TOUT ça :

' 📱 Fonctionnalités
'   □ L'app ne plante pas au lancement
'   □ Tous les boutons fonctionnent
'   □ La navigation est fluide
'   □ Les données se chargent correctement

' 🎨 Design
'   □ L'app s'affiche bien sur différentes tailles d'écran
'   □ Le mode sombre fonctionne (si implémenté)
'   □ Les icônes et images sont de bonne qualité

' 📝 Store
'   □ Icône de l'app (1024x1024)
'   □ Captures d'écran (6.5", 5.5", 12.9" pour iOS)
'   □ Description convaincante
'   □ Mots-clés SEO
'   □ Politique de confidentialité

' 🔧 Technique
'   □ Aucune erreur dans les logs
'   □ Gestion des cas hors-ligne
'   □ Notifications push (si implémenté)
'   □ Analytics en place
'   □ Crash reporting (Sentry)
``'

---

## Exercices pour toi 🎯

1. **EAS Build** : crée un compte Expo, connecte-toi et lance `eas build --platform android --profile development` sur ton projet
2. **Fiche store** : rédige la description de ton app (titre, sous-titre, description, mots-clés) comme pour une vraie publication
3. **CI/CD** : configure une GitHub Action qui lance les tests au push et fait un EAS Build en préproduction

Création des variables pas à pas

Prêt à explorer la mémoire

Appuie sur Play pour voir les variables se créer une par une

0/5

Exécution pas à pas

0/7

Visualisation d'exécution

ligne 6
code
1// 1. Configurer l'app dans app.json
2{
3 "expo": {
4 "name": "MonApp",
5 "version": "1.0.0",
6 "icon": "./assets/icon.png",
7 "splash": { "image": "./assets/splash.png" }
8 }
9}
10
11// 2. Builder
12// eas build --platform all --profile production
13
14// 3. Soumettre aux stores
15// eas submit --platform ios
16// eas submit --platform android
17
18// 4. Mise à jour OTA (sans store)
19// eas update --branch production --message "Fix bug connexion"
Variables
eas build=compile dans le cloud
eas submit=envoie aux stores
eas update=OTA sans store

📱 App Store vs Play Store