Aller au contenu
useffect.sh
Planifier 30 min avec un senior
Build et publication

EAS Build

Le service de build hébergé d’Expo : des profils dans eas.json, la gestion des credentials, et des runners macOS et Linux pour iOS et Android.

Définition

EAS Build est le service hébergé d’Expo Application Services qui compile les binaires iOS et Android d’un projet Expo ou React Native. On décrit des profils de build dans eas.json (development, preview, production, ou les vôtres), chacun avec sa distribution, ses variables d’environnement, son canal d’update et ses options natives, puis on lance eas build --profile. Les builds Android tournent sur des runners Linux chez Google Cloud, les builds iOS sur des machines macOS gérées par Expo, ce qui dispense l’équipe d’entretenir un Mac de CI. Le service peut générer et stocker les credentials (keystore Android, certificats et profils de provisioning iOS) ou utiliser les vôtres. Si les dossiers android et ios sont absents, il exécute prebuild avant de compiler. Il évite de maintenir un pipeline maison (Fastlane, CI macOS), tout en restant utilisable en local avec eas build --local. Un fichier eas.json à la racine du projet signale qu’il est en place.

Dans une vraie app

Le fichier eas.json est la pièce à lire en premier dans un projet. Un setup sain a au moins trois profils : development (developmentClient: true, distribution interne), preview (release, distribution interne, canal preview) et production (canal production, autoIncrement pour le numéro de build). Chaque profil pointe vers un canal EAS Update ; c’est ce lien qui décide quelles mises à jour OTA un binaire recevra par défaut, et il n’est modifiable ensuite que depuis l’app, via Updates.setUpdateRequestHeadersOverride.

Les pièges habituels tiennent aux secrets et à l’environnement : des variables EXPO_PUBLIC_* qui diffèrent entre local et EAS, un fichier google-services.json ignoré par git et donc absent sur le runner (à passer en variable d’environnement de type fichier), ou un .easignore qui exclut par mégarde un dossier nécessaire. Une version de Node, Xcode ou Java épinglée dans le profil (node, image) évite les surprises quand EAS change ses images par défaut.

Pour diagnostiquer un build qui passe en local et échoue sur EAS, eas build --local reproduit le pipeline sur votre machine avec les mêmes étapes. Pour l’audit, je vérifie que les credentials sont gérés par EAS ou au moins documentés, que le profil de production n’embarque pas developmentClient, et que les builds iOS passent sur une image compatible avec la version d’Xcode exigée par Apple pour la soumission.

Nos offres sur ce sujet

Sources

Les 35 termes du glossaire

Un de ces sujets bloque votre app ?

30 minutes avec un senior pour regarder le problème dans votre code. Gratuit.