App Store Connect build number: verzija in številka builda
Avtor: Mehdi Azizi
Objavljeno , 8 min
Verzija je številka, ki jo vidijo tvoje stranke, build number pa označuje vsako oddajo. Par mora biti edinstven: z Expo EAS build poveča namesto tebe.
Build number v App Store Connect je številka builda: ključ CFBundleVersion, ki označuje vsako oddajo. Verzija, CFBundleShortVersionString, je številka, ki jo tvoje stranke vidijo v App Storu. Apple zahteva, da je par verzije in številke builda edinstven: ena številka builda se pri isti verziji lahko uporabi samo enkrat.
Z Expo verzijo določiš sam, EAS pa lahko številko builda poveča ob vsakem produkcijskem buildu. Ta vodnik razloži obe številki, Applova pravila, napaki ITMS-90062 in ITMS-90189 ter kaj preveriti, ko se tvoj build ne prikaže.
Svoje iOS aplikacije, med njimi Solys, TradaZen in Nolera, objavljam z Expo in EAS. Nastavitve spodaj so iz njihovih datotek eas.json.
Verzija in številka builda: kakšna je razlika?
Tvojo aplikacijo označujeta dva ključa v Info.plist. Applova dokumentacija o CFBundleShortVersionString ga opisuje kot verzijo, ki jo vidi uporabnik: tri cela števila, ločena s pikami, na primer 10.14.1. Dokumentacija o CFBundleVersion govori o verziji builda: eno do tri cela števila, samo s številkami in pikami.
| Element | Ključ iOS | Kdo ga vidi | Polje v Expo |
|---|---|---|---|
| Verzija | CFBundleShortVersionString | Tvoje stranke | version |
| Številka builda | CFBundleVersion | Ti in Apple | ios.buildNumber |
Izmišljen primer: za verzijo 1.4.0 med testiranjem pošlješ builde 12, 13 in 14, nato enega izbereš za pregled. Pomoč za App Store Connect to povzame tako: verzija build poveže z njegovo stranjo, številka builda pa ga označuje povsod v sistemu.
Applova pravila za povečevanje
- Par mora biti edinstven. Po dokumentaciji Xcode Cloud App Store Connect zahteva edinstveno kombinacijo verzije in številke builda. Aplikacija za iPhone lahko torej pri novi verziji začne znova pri 1. Aplikacija za Mac ne: njena številka mora vedno rasti.
- Odobrena verzija je zaprta. Ko Apple odobri verzijo 1.4.0, ji ne moreš več dodati builda. Naslednja mora imeti višjo številko.
- Vsako število se primerja kot celo število. 1.10 pride za 1.9, ker je 10 večje od 9. Verzija 1.9, poslana po odobreni 1.20, bo zavrnjena.
Moj nasvet: imej celoštevilsko številko builda, ki vedno raste in je nikoli ne ponastaviš na 1. Začeti znova pri 1 je na iPhonu dovoljeno, a ena edinstvena številka skozi celo življenje aplikacije prepreči, da bi v TestFlightu zamenjal dva builda. To vidim pri svojih aplikacijah v oddaljenem načinu: števec teče naprej iz verzije v verzijo.
Upravljanje verzije in builda z Expo in EAS
Expova stran o verzijah, posodobljena 25. septembra 2026, loči vloge. Verzija (version v app.json) ostane tvoja: spremeniš jo, ko pripravljaš novo izdajo. Številko builda (ios.buildNumber) lahko prepustiš EAS. Expo pozabljeno povečanje celo navaja kot pogost razlog za zavrnitev ob oddaji.
Vse nastaviš v eas.json:
{
"cli": {
"appVersionSource": "remote"
},
"build": {
"production": {
"autoIncrement": true
}
}
}
"remote": številko builda hranijo strežniki EAS. To je priporočeno vedenje od EAS CLI 12 naprej. Števec začne pri vrednosti iz tvoje konfiguracije ali pri 1, nato seios.buildNumberignorira."local": velja tvoja konfiguracija. ZautoIncrementEAS spremeniios.buildNumberv tvoji datoteki, to spremembo pa moraš commitati ob vsakem buildu.autoIncrement: referenca eas.json za build sprejmetrueali"buildNumber", za povečanje zadnje številke verzije pa"version". Expo poudarja, da v oddaljenem načinu"version"ni podprt.
Pri meni sta TradaZen in Nolera na remote. Solys je ostala na local: njena številka builda živi v app.json in vsak produkcijski build jo v datoteki poveča. Oba načina delujeta, a oddaljeni odpravi tveganje pozabljenega commita.
Sistem dopolnjujeta dva ukaza. eas build:version:set inicializira oddaljeni števec: vnesi zadnjo številko, poslano Applu. eas build:version:sync prepiše oddaljene vrednosti v tvoj projekt, kar pride prav, če boš kdaj buildal z Xcode. Z EAS Update oddaljeni način ne deluje s politiko nativeVersion: Expo priporoča appVersion.
ITMS-90062: verzija je že odobrena
Sporočilo je videti takole (številke so izmišljene):
ERROR ITMS-90062: This bundle is invalid. The value for key
CFBundleShortVersionString [1.4.0] in the Info.plist file must
contain a higher version than that of the previously approved
version [1.4.0].
Apple je verzijo 1.4.0 že odobril: vanjo ne moreš več dodati builda. Povečaj verzijo v app.json, na primer na 1.4.1, in znova poženi build. Samo sprememba številke builda ni dovolj.
Če se napaka ponavlja, čeprav je version posodobljen, poišči polje ios.version. Po referenci konfiguracije Expo ima za iOS prednost pred version. Enako rešiš sorodno napako ITMS-90186, „Invalid Pre-Release Train“, ki opozarja na verzijo, zaprto za nove builde.
ITMS-90189: Redundant Binary Upload
Tu se zatakne pri številki builda:
ERROR ITMS-90189: Redundant Binary Upload. You've already uploaded
a build with build number '12' for version number '1.4.0'.
Par 1.4.0 (12) pri Applu že obstaja. Z Expo se ponavljajo štirje vzroki:
- Uporabljeni profil nima
autoIncrement. Če ustvariš ločen profil za TestFlight, kot pri Noleri, mu možnost dodaj. - Oddaljeni števec zaostaja. Na
remotesi prešel po ročnih oddajah: poženieas build:version:setz zadnjo številko, ki jo pozna Apple. - V lokalnem načinu si pozabil commit. Naslednji build začne pri stari številki.
- Pošiljaš isti binarni paket. Pri
eas submitizberi novi build, ne starega.
Popravek je vedno isti: nov build z višjo številko.
„No builds available“: tvoj build se ne prikaže
Build je odšel, a tvoja stran ga ne ponudi. Preveri po tem vrstnem redu.
- Še se obdeluje. Apple vsak build obdela, preden ga prikaže, in ti ob koncu pošlje e-pošto. Expo navaja običajno 10 do 15 minut. Po Applu moraš po več kot 24 urah obdelave odpreti zahtevek v Feedback Assistant.
- Čaka na tvojo izjavo o šifriranju. To je status Missing Compliance, podrobneje opisan spodaj.
- Verzija se ne ujema. Build 1.4.1 se v App Store Connect ne uvrsti pod stran, pripravljeno za 1.5.0. Uskladi obe.
- Vmes je izšla nova verzija. Po pomoči o izbiri builda seznam takrat pokaže samo builde, poslane po tej izdaji.
- Ne vidi ga tester. V aplikaciji TestFlight „no builds available“ pogosto pomeni, da build ni v nobeni skupini, čaka na beta pregled ali je potekel. Podrobnosti so v TestFlight za testiranje tvoje aplikacije za iPhone.
Statusi, ki jih moraš poznati
Statusi, ki najpogosteje pojasnijo manjkajoči build, po Applovem seznamu. Processing in Failed tam nista: to sta statusa oddaje, opisana v spremljanju buildov.
| Status | Kaj pomeni | Tvoj popravek |
|---|---|---|
| Processing | Apple obdeluje build | Počakaj na e-pošto |
| Failed | Napaka pri obdelavi | Preberi napako, pošlji |
| Missing Compliance | Šifriranje ni prijavljeno | Odgovori ali Info.plist |
| Invalid Binary | Neskladna oddaja | Popravi, nov build |
| Expired | Preteklo je 90 dni | Nov build |
| Ready to Submit | Pripravljen za test/pregled | Dodaj ga v skupino |
Šifriranje prijavi enkrat za vselej
Brez ključa ITSAppUsesNonExemptEncryption ti Apple vprašanja o skladnosti zastavi pri vsaki novi verziji. V Expo se polje imenuje ios.config.usesNonExemptEncryption:
{
"expo": {
"ios": {
"config": {
"usesNonExemptEncryption": false
}
}
}
}
false pomeni: brez šifriranja ali samo z izvzetim šifriranjem. Apple pojasnjuje, da je šifriranje, vgrajeno v sistem, na primer povezave HTTPS, praviloma izvzeto in da odgovor velja tudi za tvoje knjižnice. Vse tri moje aplikacije prijavljajo false. false nastavi samo, če to za tvojo aplikacijo res drži: izjava te zavezuje.
Ali lahko spremeniš številko že poslanega builda?
Ne. Številka je zapisana v podpisanem binarnem paketu: za popravek potrebuješ nov build.
Spremeniš lahko build, povezan s tvojo verzijo. Apple dovoli en build na verzijo, a zamenjaš ga lahko kolikorkrat želiš, dokler ga ne pošlješ v pregled:
- Odpri verzijo v App Store Connect, razdelek Build.
- Z miško pojdi nad trenutni build in klikni gumb za odstranitev, znak minus.
- Klikni gumb za dodajanje, znak plus, izberi pravi build in shrani.
Odstranitev builda iz verzije ga ne izbriše iz tvojega računa. Če je verzija že v pregledu, najprej umakni oddajo: pregled se bo začel znova.
Pred naslednjo oddajo
Številka builda je le eno od preverjanj ob oddaji. Slika builda lahko sproži ITMS-90725, podpisovanje pa ima svoje pasti, opisane v certifikat za razvijalce iOS in provisioning profile. Celotna veriga od builda do TestFlighta je v objava aplikacije iOS brez Maca, časi pregleda pa v koliko traja odobritev v App Storu. Vsi koraki so zbrani na strani objava aplikacije v App Storu.
Če pripravljaš svojo prvo izdajo, naredi brezplačno diagnostiko: pove ti, kaj v tvojem projektu blokira, in ti pošlje moj seznam za preprečevanje Applovih zavrnitev. Za izdelavo aplikacije, priklop naročnin in objavo te iOS & Android Kit vodi skozi pot v štirih korakih z začetno kodo mojih aplikacij, v tvojem tempu.
Pogosta vprašanja
Kakšna je razlika med verzijo in build numberjem v App Store Connect?
Verzija je javna številka tvoje izdaje, na primer 1.4.0. Build number označuje točno določen binarni paket, poslan Applu za to verzijo. Za isto verzijo lahko pošlješ več buildov, vsakega s svojo številko.
Ali moram številko builda spremeniti ob vsaki oddaji?
Da, pri isti verziji. Apple zavrne drugo oddajo z enakim parom verzije in številke builda, to je napaka ITMS-90189. Z EAS za to ob vsakem produkcijskem buildu poskrbi autoIncrement.
Ali mora številka builda pri vsaki verziji začeti znova pri 1?
Ni obvezno. Na iPhonu Apple za novo verzijo sprejme nižjo številko, ker mora biti edinstven samo par. Števec, ki vedno raste, je preprosteje spremljati.
Kako spremenim build number v App Store Connect?
Številke že poslanega builda ne moreš spremeniti. Lahko pa zamenjaš build, pripet tvoji verziji, v razdelku Build na strani, dokler ta ni v pregledu. Za novo številko naredi nov build.
Zakaj se moj build ne prikaže v App Store Connect?
Najpogosteje se še obdeluje ali čaka na tvojo izjavo o šifriranju. Preveri tudi, ali se njegova verzija ujema z verzijo na tvoji strani. Po več kot 24 urah obdelave Apple zahteva, da odpreš zahtevek.

