{
"cli": {
"version": ">= 7.0.0"
},
"build": {
"production": {
"ios": {
"simulator": false,
"enterpriseProvisioning": "universal"
}
}
},
"submit": {
"production": {
"ios": {
"appleId": "dev@firma.ro",
"ascApiKeyPath": "./pc-api-key.p8",
"ascApiKeyId": "ABC123XYZ",
"ascApiKeyIssuerId": "12345678-abcd-1234-efgh-1234567890ab"
}
}
}
}Dacă pregătești prima lansare pe App Store și încă te trec transpirațiile când auzi de Provisioning Profiles, Apple Certificates și Keychain Access, te înțeleg perfect. Am trecut recent prin asta la un proiect React Native cu vreo 12k utilizatori pregătiți de onboarding, iar obiectivul a fost clar: zero timp pierdut cu configurări manuale de iOS.
Iată exact cum am configurat Expo EAS Build cu certificate auto-managed și ce lucruri trebuie să ai în vedere ca să nu-ți fie respins build-ul din prima.
De ce auto-managed și care e trade-off-ul real
Acum câțiva ani pierdeam lejer o jumătate de zi generând fișiere .cer, .mobileprovision, exportând chei private .p12 și urcându-le manual în pipeline-uri de Bitrise sau Fastlane. EAS credentials management face toată această birocrație în fundal, interconectându-se direct cu Apple Developer API.
Trade-off-ul e sincer: câștigi o viteză masivă și elimini eroarea umană, dar dai serviciilor Expo acces automatizat la contul tău de Apple Developer. Dacă lucrezi într-o corporație cu cerințeInfoSec drastice sau cu certificate Enterprise (In-House), probabil echipa de securitate te va obliga să gestionezi manual distribuția. Pentru 95% din proiecte însă, opțiunea auto-managed e cea mai sănătoasă alegere.
Pașii exacți pentru prima configurare
Ca să meargă totul din prima încercare, urmează fluxul ăsta fără să sari etape:
- Creează App Store Connect API Key: Intră în portalul App Store Connect -> Users and Access -> Integrations -> App Store Connect API. Generează o cheie nouă cu rol de Admin sau App Manager. Descarci fișierul
.p8(atenție, Apple te lasă să-l descarci o singură dată!) și salveziKey IDșiIssuer ID. - Pregătește proiectul local: Asigură-te că ai instalat ultimul CLI de la Expo (
npm i -g eas-cli) și că ești logat în contul tău. În rădăcina proiectului, ruleazăeas build:configuredacă nu ai deja un fișiereas.jsonvalid. - Rulează build-ul de producție: Când dai
eas build --platform ios --profile production, CLI-ul te va întreba cum vrei să rezolvi credentials. Alegi opțiunea "Let Expo handle your credentials". - Introdu datele API Key: Când te întreabă de autentificarea Apple, alege să folosești App Store Connect API Key și introdu
Key ID,Issuer IDși calea către fișierul.p8. De aici încolo, EAS creează automat Distribution Certificate, App ID și Provisioning Profile-ul de App Store.
Ce am învățat pe pielea mea (Gotchas)
Am pățit la prima încercare ca build-ul să treacă cu succes în EAS, dar să fie respins imediat de Apple la ingestie. Motivul? Lipsa configurărilor clare pentru Privacy Manifests, pe care Apple le cere acum cu strictețe pentru orice API sensibil (cum ar fi UserDefaults sau device identity). Asigură-te că ai Expo SDK la zi (v51 sau mai nou), deoarece template-urile recente includ deja aceste declarații direct în app.json.
Un alt detaliu: dacă modifici bundleIdentifier-ul în app.json după ce ai generat deja certificatele, EAS va încerca să creeze un nou App ID. Dacă nu ai drepturi de Admin pe contul Apple Developer, comanda va crăpa cu o eroare criptică de permisiuni. Setează bundleIdentifier-ul definitiv înainte de primul eas build.
Voi ce soluție folosiți pentru pipeline-ul de iOS? Ați rămas pe Fastlane clasic sau ați trecut complet pe EAS Submit?