App Store Connect build number: verzió és buildszám
Írta: Mehdi Azizi
Megjelent: , 8 p
A verziót látják a vásárlóid, a buildszám minden feltöltést azonosít. A kettő párosa egyedi kell legyen: Expóval az EAS növeli helyetted a buildszámot.
Az App Store Connect build number a buildszám: a CFBundleVersion kulcs, ami minden feltöltést azonosít. A verzió, a CFBundleShortVersionString, az a szám, amit a vásárlóid az App Store-ban látnak. Az Apple megköveteli, hogy a verzió és a buildszám párosa egyedi legyen: egy buildszámot ugyanahhoz a verzióhoz csak egyszer használhatsz.
Expóval a verziót te magad állítod be, a buildszámot pedig az EAS minden production buildnél növelheti. Ez az útmutató elmagyarázza a két számot, az Apple szabályait, az ITMS-90062 és ITMS-90189 hibákat, és hogy mit nézz meg, ha nem jelenik meg a buildod.
Az iOS-appjaimat Expóval és EAS-szel adom ki, köztük a Solyst, a TradaZent és a Nolerát. A lent mutatott beállítások az ő eas.json fájljaikból valók.
Verzió és buildszám: mi a különbség?
Két Info.plist-kulcs azonosítja az appodat. Az Apple CFBundleShortVersionString dokumentációja a felhasználó által látott verzióként írja le: három, pontokkal elválasztott egész szám, például 10.14.1. A CFBundleVersion dokumentációja a build verziójáról beszél: egy-három egész szám, csak számjegyekkel és pontokkal.
| Elem | iOS-kulcs | Ki látja | Expo-mező |
|---|---|---|---|
| Verzió | CFBundleShortVersionString | A vásárlóid | version |
| Buildszám | CFBundleVersion | Te és az Apple | ios.buildNumber |
Kitalált példa: az 1.4.0-s verzióhoz a tesztelés alatt feltöltöd a 12-es, 13-as és 14-es buildet, aztán kiválasztasz egyet a reviewhoz. Az App Store Connect súgója így foglalja össze: a verzió köti a buildet az adatlapjához, a buildszám pedig mindenhol azonosítja a rendszerben.
Az Apple növelési szabályai
- A párosnak egyedinek kell lennie. Az Xcode Cloud dokumentációja szerint az App Store Connect a verzió és a buildszám egyedi kombinációját követeli meg. Egy iPhone-app tehát új verziónál újrakezdheti 1-ről. Egy Mac-app nem: annak a száma mindig nőnie kell.
- A jóváhagyott verzió le van zárva. Ha az Apple jóváhagyta az 1.4.0-s verziót, már nem adhatsz hozzá buildet. A következőnek magasabb számot kell kapnia.
- Minden számot egész számként hasonlít össze. Az 1.10 az 1.9 után jön, mert a 10 nagyobb, mint a 9. Egy jóváhagyott 1.20 után feltöltött 1.9-es verziót elutasítanak.
A tanácsom: tarts egy mindig növekvő, egész buildszámot, és ne állítsd vissza 1-re. iPhone-on szabad újrakezdeni 1-ről, de az app teljes élettartamára egyedi szám megakadályozza, hogy összekeverj két buildet a TestFlightban. Ezt látom a remote módban futó appjaimnál: a számláló verzióról verzióra folytatódik.
Verzió és build kezelése Expóval és EAS-szel
Az Expo verziókról szóló oldala, amit 2026. szeptember 25-én frissítettek, szétválasztja a szerepeket. A verzió (version az app.json-ban) a te dolgod: akkor változtatod, amikor új kiadást készítesz. A buildszámot (ios.buildNumber) rábízhatod az EAS-re. Az Expo egyébként a növelés elfelejtését a feltöltéskori elutasítás gyakori okaként említi.
Mindent az eas.json-ban állítasz be:
{
"cli": {
"appVersionSource": "remote"
},
"build": {
"production": {
"autoIncrement": true
}
}
}
"remote": az EAS szerverei tárolják a buildszámot. Az EAS CLI 12 óta ez az ajánlott működés. A számláló a konfigurációd értékéről vagy 1-ről indul, utána azios.buildNumberfigyelmen kívül marad."local": a konfigurációd a mérvadó.autoIncrementmellett az EAS átírja azios.buildNumberértékét a fájlodban, és ezt a változást minden buildnél commitolnod kell.autoIncrement: az eas.json referenciája a buildheztruevagy"buildNumber"értéket fogad el, a"version"pedig a verzió utolsó számjegyét növeli. Remote módban az Expo szerint a"version"nem támogatott.
Nálam a TradaZen és a Nolera remote módban van. A Solys local maradt: a buildszáma az app.json-ban él, és minden production build megnöveli a fájlban. Mindkettő működik, de a remote mód kiküszöböli az elfelejtett commit kockázatát.
Két parancs egészíti ki a rendszert. Az eas build:version:set inicializálja a távoli számlálót: add meg az Apple-nek utoljára feltöltött számot. Az eas build:version:sync átmásolja a távoli értékeket a projektedbe, ami hasznos, ha egyszer Xcode-dal fordítasz. EAS Update esetén a remote mód nem működik a nativeVersion policyval: az Expo az appVersion-t javasolja.
ITMS-90062: a verzió már jóvá van hagyva
Az üzenet nagyjából így néz ki (kitalált számokkal):
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].
Az Apple már jóváhagyta az 1.4.0-s verziót: nem adhatsz hozzá több buildet. Emeld meg a verziót az app.json-ban, például 1.4.1-re, aztán indíts új buildet. Csak a buildszám megváltoztatása nem elég.
Ha a hiba akkor is visszatér, amikor a version már friss, keress egy ios.version mezőt. Az Expo konfigurációs referenciája szerint ez iOS-en felülírja a version értékét. Ugyanez a megoldás a rokon ITMS-90186-os hibára, az „Invalid Pre-Release Train”-re, ami egy új buildek elől lezárt verziót jelez.
ITMS-90189: Redundant Binary Upload
Itt a buildszám a gond:
ERROR ITMS-90189: Redundant Binary Upload. You've already uploaded
a build with build number '12' for version number '1.4.0'.
Az 1.4.0 (12) páros már létezik az Apple-nél. Expóval négy ok szokott előfordulni:
- A használt profilban nincs
autoIncrement. Ha külön profilt hozol létre a TestFlighthoz, mint a Nolera esetében, tedd bele újra az opciót. - A távoli számláló le van maradva. Kézi feltöltések után váltottál
remote-ra: futtasd azeas build:version:setparancsot az Apple-nél utoljára ismert számmal. - Local módban elmaradt a commit. A következő build a régi számról indul újra.
- Ugyanazt a binárist küldöd újra. Az
eas submithasználatakor az új buildet válaszd, ne a régit.
A javítás mindig ugyanaz: új build magasabb számmal.
„No builds available”: nem jelenik meg a buildod
A build elment, de az adatlapod nem kínálja fel. Ebben a sorrendben ellenőrizd.
- Még feldolgozás alatt áll. Az Apple minden buildet feldolgoz, mielőtt megjelenítené, és a végén e-mailt küld. Az Expo általában 10-15 percről beszél. Az Apple szerint ha 24 óránál tovább van feldolgozás alatt, nyiss egy Feedback Assistant jegyet.
- A titkosítási nyilatkozatodra vár. Ez a Missing Compliance állapot, lejjebb részletezem.
- Nem egyezik a verzió. Egy 1.4.1-es build nem kerül be egy 1.5.0-ra előkészített adatlap alá az App Store Connectben. Hangold össze a kettőt.
- Közben megjelent egy verzió. A build kiválasztásáról szóló súgó szerint ilyenkor a lista csak az azóta feltöltött buildeket mutatja.
- A tesztelő nem látja. A TestFlight appban a „no builds available” gyakran azt jelenti, hogy a build egyik csoportban sincs benne, béta reviewra vár vagy lejárt. A részletek itt vannak: TestFlight az iPhone-appod teszteléséhez.
A fontos állapotok
Az állapotok, amelyek a leggyakrabban megmagyarázzák a hiányzó buildet, az Apple listája alapján. A Processing és a Failed nem szerepel benne: ezek feltöltési állapotok, amelyeket a buildek követése ír le.
| Állapot | Mit jelent | A javításod |
|---|---|---|
| Processing | Az Apple feldolgozza | Várd meg az e-mailt |
| Failed | Hiba a feldolgozáskor | Olvasd el, küldd újra |
| Missing Compliance | Nincs titkosítási nyilatkozat | Válaszolj vagy Info.plist |
| Invalid Binary | Nem megfelelő feltöltés | Javítsd, új build |
| Expired | Letelt a 90 nap | Új build |
| Ready to Submit | Kész tesztre vagy reviewra | Add hozzá egy csoporthoz |
A titkosítás egyszeri, végleges bejelentése
Az ITSAppUsesNonExemptEncryption kulcs nélkül az Apple minden új verziónál felteszi a megfelelőségi kérdéseket. Expóval a mező neve ios.config.usesNonExemptEncryption:
{
"expo": {
"ios": {
"config": {
"usesNonExemptEncryption": false
}
}
}
}
A false azt jelenti: nincs titkosítás, vagy csak mentesített titkosítás van. Az Apple pontosítja, hogy a rendszerbe épített titkosítás, például a HTTPS-kapcsolatok, általában mentesített, és hogy a válasz a könyvtáraidra is vonatkozik. Mindhárom appom false értéket ad meg. Csak akkor írj false-t, ha ez igaz az appodra: a nyilatkozatért te felelsz.
Megváltoztatható egy már feltöltött build száma?
Nem. A szám bele van írva az aláírt binárisba: a javításához új build kell.
Amit megváltoztathatsz, az a verziódhoz csatolt build. Az Apple verziónként egy buildet enged, de annyiszor cserélheted, ahányszor akarod, egészen a reviewra küldésig:
- Nyisd meg a verziót az App Store Connectben, a Build szekciót.
- Vidd az egeret a jelenlegi build fölé, és kattints a törlés gombra, a mínuszjelre.
- Kattints a hozzáadás gombra, a pluszjelre, válaszd ki a megfelelő buildet, aztán ments.
Ha eltávolítasz egy buildet egy verzióból, az nem törlődik a fiókodból. Ha a verzió már review alatt van, előbb vond vissza a beküldést: a review elölről kezdődik.
A következő feltöltésed előtt
A buildszám csak az egyik ellenőrzés feltöltéskor. A build image kiválthatja az ITMS-90725 hibát, az aláírásnak pedig megvannak a saját csapdái, ezeket az iOS fejlesztői tanúsítvány és provisioning profile cikkben részletezem. A teljes folyamat a buildtől a TestFlightig az iOS-app kiadása Mac nélkül cikkben van, a review időtartama pedig az App Store jóváhagyási idő cikkben. Minden lépést összegyűjtöttem az alkalmazás kiadása az App Store-ban oldalon.
Ha az első kiadásodat készíted, csináld meg az ingyenes diagnosztikát: megmondja, mi akadályozza a projektedet, és elküldi az Apple-elutasítás elleni checklistemet. Az app megépítéséhez, az előfizetések bekötéséhez és a kiadáshoz az iOS & Android Kit négy lépésben végigvisz az úton az appjaim Starter Code-jával, a saját tempódban.
Gyakori kérdések
Mi a különbség a verzió és a build number között az App Store Connectben?
A verzió a kiadásod nyilvános száma, például 1.4.0. A build number egy konkrét, ehhez a verzióhoz az Apple-nek feltöltött binárist azonosít. Egy verzióhoz több buildet is feltölthetsz, mindegyiket saját számmal.
Minden feltöltésnél változtatni kell a buildszámot?
Igen, ugyanazon a verzión belül. Az Apple elutasítja a második feltöltést ugyanazzal a verzió-buildszám párossal, ez az ITMS-90189-es hiba. EAS-szel az autoIncrement minden production buildnél elintézi.
Minden verziónál 1-ről kell újrakezdeni a buildszámot?
Nem kötelező. iPhone-on az Apple új verziónál alacsonyabb számot is elfogad, mert csak a párosnak kell egyedinek lennie. Egy mindig növekvő számlálót viszont egyszerűbb követni.
Hogyan változtathatom meg a build numbert az App Store Connectben?
Egy már feltöltött build számát nem módosíthatod. A verziódhoz csatolt buildet viszont lecserélheted az adatlap Build szekciójában, amíg nincs review alatt. Új számhoz készíts új buildet.
Miért nem jelenik meg a buildom az App Store Connectben?
Legtöbbször még feldolgozás alatt áll, vagy a titkosítási nyilatkozatodra vár. Azt is ellenőrizd, hogy a verziója egyezik-e az adatlapodéval. Ha 24 óránál tovább tart a feldolgozás, az Apple azt kéri, hogy nyiss jegyet.

