{
"cli": {
"version": ">= 9.0.0"
},
"build": {
"development": {
"developmentClient": true,
"distribution": "internal"
},
"production": {
"ios": {
"simulator": false
}
}
},
"submit": {
"production": {}
}
}Anul trecut m-am lovit din nou de calvarul lansării unei aplicații pe App Store, de data asta folosind Expo EAS Build cu certificate auto-managed. Dacă vii din era în care făceai manual CSR-uri în Keychain Access și le urcai în Apple Developer Portal, ghidul ăsta o să-ți salveze vreo 4 ore de înjurături. Hai să îți arăt exact cum configurezi totul de la zero, fără dureri de cap.
De ce să lași Expo să-și bage nasul în certificatele tale?
Să fim sinceri: istoric vorbind, administrarea certificatelor iOS a fost mereu un coșmar administrativ. EAS (Expo Application Services) promite că face totul singur. Trade-off-ul e simplu. Dacă ești freelancer sau lucrezi într-o echipă mică, e absolut perfect. Îi dai acces lui Expo la contul tău de Apple Developer (folosind o cheie API sau login temporar) și el generează Distribution Certificate, Provisioning Profile și tot ce trebuie.
Dacă lucrezi la o corporație unde departamentul de securitate face atac de panică când aude că o terță parte are acces la cheia de distribuție, atunci varianta asta pică. Va trebui să folosești manual credentials. Dar pentru 90% din proiecte, auto-manage-ul de la Expo e efectiv aur curat. Am lansat recent o aplicație pentru un client local cu peste 3.000 de useri în TestFlight și n-am atins o secundă portalul Apple Developer.
Pașii exacți pentru prima lansare
Înainte de toate, ai nevoie de un cont de Apple Developer plătit (da, ăla de 99$/an). Fără el, nu treci de linia de start.
Pasul 1: Instalează eas-cli global și asigură-te că ești logat în contul tău Expo în terminal prin eas login.
Pasul 2: Configurează eas.json în rădăcina proiectului. Ai nevoie de un profil de production setat corect pentru iOS.
Pasul 3: Rulează comanda de build: eas build --platform ios --profile production. Aici se întâmplă magia. Terminalul o să te întrebe: „Do you want Expo to handle your credentials?”. Răspunzi cu un „Yes” hotărât. Expo îți va cere să te loghezi în contul Apple. Recomand să folosești un App Store Connect API Key (e mult mai stabil și nu expiră sesiunea la fel de repede ca 2FA-ul de pe telefon).
Pasul 4: Odată ce build-ul e gata în cloud-ul Expo (durează cam 10-15 minute, depinde de coadă), rulezi eas submit --platform ios și aplicația zboară direct în TestFlight.
Ce am pățit și la ce să fii atent
Chiar dacă e „auto-managed”, tot mai apar glitch-uri de care m-am lovit direct. Am pățit ca un build să eșueze pentru că aveam deja numărul maxim de certificate de distribuție active pe contul Apple (limita e destul de strânsă). Expo nu a putut să șteargă automat unul vechi ca să nu-mi strice alte aplicații active.
Soluția? Am intrat în contul Apple Developer la secțiunea Certificates, am revocat manual un certificat expirat de acum 2 ani de la un proiect mort și am reluat build-ul. Totul a mers brici după.
Un alt detaliu critic: asigură-te că bundleIdentifier din app.json este exact cel pe care îl vrei pe viață în App Store. Odată ce Expo înregistrează acel App ID în portalul Apple, e destul de enervant să îl schimbi fără să o iei de la capăt cu alte certificate.
EAS Build cu auto-manage e probabil cel mai bun lucru care i s-a întâmplat ecosistemului React Native în ultimii ani. Voi ce folosiți pentru deployment-ul de iOS: tool-urile automate de la Expo sau ați rămas fideli bătrânului Fastlane?