ITMS-90717: „Invalid large app icon” javítása Expóval
Írta: Mehdi Azizi
Megjelent: , 8 p
ITMS-90717: a build 1024 x 1024-es ikonjában átlátszóság vagy alfacsatorna maradt. Exportáld átlátszatlanul, ellenőrizd sipsszel, és buildelj újra.
ITMS-90717 az Apple automatikus ellenőrzése a buildeden. Azt jelzi, hogy az app nagy ikonja, az az 1024 x 1024 pixeles, amit az App Store mutat, átlátszóságot vagy alfacsatornát tartalmaz. A javítás: egy négyzetes, átlátszatlan ikon, alfacsatorna nélkül exportálva, aztán egy új build.
Expóval ritkán a PNG fájlod a bűnös: a prebuild eleve fehér háttérre teszi. Elolvastam ezt a kódot az SDK 57-ben, és ellenőriztem a Solys, a TradaZen és a Nolera ikonjait. Ilyenkor a hiba leggyakrabban egy verziókezelt ios mappából vagy egy Icon Composer fájlból jön. Megmutatom, hogyan találd meg, melyikből, és hogyan javítsd.
Mit jelent az ITMS-90717 hiba?
Az üzenet címe „ITMS-90717: Invalid large app icon”. Azt írja, hogy az app képkatalógusában lévő nagy ikon „can't be transparent or contain an alpha channel”: nem lehet átlátszó, és nem tartalmazhat alfacsatornát. A régebbi üzenetek „Invalid App Store Icon”-ról beszéltek. Ugyanaz a szabály.
Ez a nagy ikon az App Store ikonja. Az Xcode ikonokról szóló dokumentációja elmagyarázza: egy App Store-on terjesztett appnak a képkatalógusában kell megadnia az 1024 pontos ikonját.
Az alfacsatorna a PNG negyedik rétege a piros, a zöld és a kék mellett. Ez tárolja minden pixel átlátszóságát. Egy ikon tűnhet teljesen kitöltöttnek, és mégis megtarthatja ezt a csatornát: ez a csapda, ami minden fórumszálban előjön.
A többi ITMS hibához hasonlóan ez sem egy reviewer elutasítása. Az Apple a feltöltéskor elemezte a binárist. A feltöltő eszköztől függően a hiba validálási hibaként jelenik meg, például 409-es kóddal.
Ellenőrizd az ikonodat sipsszel
Macen a sips alapból telepítve van. Egy sor elég:
sips -g hasAlpha assets/icon.png
Azt szeretnéd látni, hogy hasAlpha: no. 2026. október 15-én lefuttattam ezt a parancsot a Solys, a TradaZen és a Nolera app.json fájljaiban megadott ikonokon: mindegyik no választ ad, 1024 x 1024-ben.
Készítettem egy tesztikont is: egy teljesen átlátszatlan kék négyzetet, de alfacsatornával mentve. A sips válasza yes. Egyetlen pixel sem átlátszó, a csatorna mégis ott van. Ezért írja oly sok fejlesztő ez alá az üzenet alá, hogy „az ikonomban semmi átlátszóság nincs”.
A Preview-ban az inspektor (Tools, Show Inspector) szintén listázza a kép tulajdonságait, köztük az alfacsatornát.
Javítás: exportáld az ikont alfacsatorna nélkül
Három módszer, a legegyszerűbbtől a legpontosabbig.
1. Preview. File, Export, PNG formátum, aztán vedd ki a pipát az Alpha jelölőnégyzetből. Az exportált fájlnak már nincs alfacsatornája.
2. sips, semmit nem kell telepíteni. A sips nem távolítja el egy PNG alfacsatornáját. Egy JPEG-en kell átvinni, annak nincs ilyen:
sips -s format jpeg -s formatOptions 100 icon.png --out icon.jpg
sips -s format png icon.jpg --out icon-opaque.png
sips -g hasAlpha icon-opaque.png
Az átlátszó sarkú tesztikonomon a sarkok fehérek lettek, az utolsó sor pedig no választ ad. A JPEG-en át vezető út kicsit tömöríti a képet, még maximális minőségen is: nézd meg alaposan az eredményt.
3. ImageMagick. Ha telepítve van, te választod meg a háttérszínt:
magick icon.png -background white -alpha remove -alpha off icon-opaque.png
Az ImageMagick dokumentációja szerint a -alpha remove a háttérszínre teszi a képet, a -alpha off pedig kikapcsolja a csatornát.
Mindhárom módszer egyszínű kitöltéssel pótolja az átlátszóságot. Ha a logód átlátszó háttéren lebegett, a legtisztább megoldás, ha előveszed a forrásfájlt, és rajzolsz bele egy igazi hátteret. Az Expo ezt kéri az app ikonról szóló útmutatójában: az ikonnak ki kell töltenie az egész négyzetet, lekerekített sarkok és átlátszó pixelek nélkül. A maszkot az iOS maga alkalmazza.
Honnan veszi az Expo az ikonodat, és mit csinál vele
Az Expo először az ios.icon mezőt olvassa, aztán a konfigurációd gyökerében lévő icon mezőt. Az Expo konfigurációs referenciája szerint az ios.icon háromféle formát fogad el: egy PNG-t, egy light, dark és tinted változatokat tartalmazó objektumot, vagy egy Icon Composerrel készült .icon mappát.
Az alábbi táblázat abból a kódból származik, amely a prebuild során az iOS ikont generálja: @expo/prebuild-config 57.0.16 (SDK 57), 2026. október 15-én olvastam:
| Amit megadsz | Amit a prebuild csinál | ITMS-90717 kockázat |
|---|---|---|
icon PNG-ként | Fehér háttérre lapítja | Alacsony |
ios.icon.light | Fehér háttérre lapítja | Alacsony |
ios.icon.tinted | Fehér háttérre lapítja | Alacsony |
ios.icon.dark | Megtartja az átlátszóságot | Az Apple így kéri |
ios.icon .icon-ként | Változatlanul másolja | Valós |
Verziókezelt ios mappa | A prebuild nem fut újra | Valós |
PNG esetén az Expo maga távolítja el az átlátszóságot, és fehérrel helyettesíti. Egy kivágott logó így egy fehér négyzeten végzi: hiba nincs, de a megjelenés talán nem az, amit akartál. A sötét változat megtartja az átlátszóságát, és ez szándékos: az Apple átlátszó hátteret kér a sötét ikonhoz, hogy a rendszer által adott háttér látsszon.
A Nolerán, amely mindhárom változatot megadja, a sips no választ ad a generált világos és színezett ikonra, és yes választ a sötétre. E változatok commitjának dátuma alapján az élesben lévő 1.0.2-es verzió már tartalmazza őket. Az IPA-ban ezt nem ellenőriztem.
A verziókezelt ios mappa esete
Expóval ez a legvalószínűbb ok. Az Expo folyamatos natív generálásról szóló oldala kimondja: ha a projekted tartalmazza az android és ios mappákat, az EAS Build nem futtatja a prebuildet. Ilyenkor az app.json már nem nyúl az ikonhoz: az ios mappában lévő PNG megy az Apple-hez.
Ellenőrizd a projekt gyökeréből:
sips -g hasAlpha ios/*/Images.xcassets/AppIcon.appiconset/*.png
Ha a parancs yes választ ad az 1024-es ikonra, cseréld le ezt a fájlt az átlátszatlan változatodra, ugyanazzal a névvel. Ha nem módosítottál semmit kézzel a natív részen, törölheted is az ios mappát, és hozzáadhatod a .gitignore-hoz: az EAS minden buildnél újragenerálja. A Solys, a TradaZen és a Nolera esetében ezt a mappát a git figyelmen kívül hagyja.
Az iOS 26 formátuma: Icon Composer
Az Icon Composer az Apple eszköze az iOS 26 Liquid Glass ikonjaihoz. Egyetlen, több rétegből álló .icon fájlt készít. Az Apple Icon Composer útmutatója szerint az Xcode ebből a régebbi iOS verziókhoz szükséges képeket is előállítja.
Az Expo az SDK 54 óta kezeli. A mappát szövegként add meg, sosem a változatokat tartalmazó objektumban:
{
"expo": {
"ios": {
"icon": "./assets/app.icon"
}
}
}
Ebben az esetben a prebuild hozzányúlás nélkül másolja a mappát, és a végső ikont az Xcode készíti el. Ehhez tehát Xcode 26 vagy újabb kell, ami a friss EAS image-ekben van, ahogy az ITMS-90725 útmutatóban elmagyarázom.
2025 augusztusa óta az Apple fejlesztői fórumán több szál jelez ITMS-90717 hibát .icon fájlokkal. A felmerült okok: egy átlátszó PNG réteg, egy a vászonnál nagyobb réteg, egy Blur effektes csoport a szél közelében. Az említett kerülőutak: a Blur kikapcsolása, kitöltött háttér megtartása, vagy visszatérés PNG-re. Ezekben a szálakban nincs hivatalos javítás az Apple-től, és a hibát 2026 augusztusában is jelezték még.
Az Apple ikonokra vonatkozó szabályai ebbe az irányba mutatnak: ha háttérréteget importálsz, annak le kell fednie a teljes felületet, és átlátszatlannak kell lennie. Az appjaim még PNG-t használnak, így az Icon Composert éles környezetben nem teszteltem. Ha egy .icon fájl blokkolja a feltöltésedet, állítsd vissza az ios.icon mezőt PNG-re: az Expo lelapítja, és az ikonod átmegy ezen az ellenőrzésen.
Ellenőrizd az ikont a végső buildben
Az IPA-ban az 1024-es ikon nem PNG fájl: az Xcode az Assets.car fájlba fordítja. Töltsd le az IPA-t a build oldaláról az expo.dev-en, aztán futtasd:
unzip -q MyApp.ipa -d ipa
xcrun assetutil --info ipa/Payload/*.app/Assets.car | grep -B3 '"RenditionName" : "App-Icon'
Minden ikonnál megjelenik egy Opaque mező. 2026. október 15-én az Xcode eszközével, az actool-lal lefordítottam a Solys ikonját és az átlátszó sarkú tesztikonomat. Az első "Opaque" : true, a második "Opaque" : false eredményt ad. Az Apple nem dokumentálja ezt a mezőt: tekintsd jelzésnek, ne az Apple ellenőrzésének.
Egy csapda, amiről tudnod kell: ne a sips-szel teszteld az app gyökerében lévő kis PNG fájlokat. Az Xcode alfacsatornával írja őket, még akkor is, ha a forrás átlátszatlan. A Solys ikonjával végzett tesztemen a sips yes választ ad rájuk.
A többi ikonhiba
| Kód | Amit az Apple jelez | Irány Expóval |
|---|---|---|
| ITMS-90717 | Átlátszó 1024-es ikon | Exportálás alfa nélkül |
| ITMS-90704 | Hiányzó 1024-es ikon | Hiányzó 1024-es elem |
| ITMS-90022 | Hiányzó iPhone ikon | Hiányos katalógus |
| ITMS-90023 | Hiányzó iPad ikon | Hiányos katalógus |
Az utolsó három üzenet főleg 2017-ből és 2018-ból származik, amikor az Xcode 9 megváltoztatta az ikonszabályokat.
Expóval ritkák lettek. A prebuild egyetlen univerzális, 1024-es ikont ír, a többi méretet az Xcode generálja. Ha nincs megadott ikon, az Expo még egy fehér négyzetet is létrehoz, hogy elkerülje a feltöltési hibát. Ha mégis előjön valamelyik, nézd meg a verziókezelt ios mappát: az AppIcon.appiconset Contents.json fájljában lennie kell egy 1024x1024 méretű elemnek, és az általa hivatkozott PNG-nek léteznie kell.
A következő feltöltés előtt
Egy ikont tíz perc alatt kijavítasz, de minden hiba egy buildbe kerül. A többi automatikus ellenőrzés ugyanilyen alaposságot kíván, például az ITMS-90683 az engedélykérő szövegeknél, vagy az ITMS-91053 az adatvédelmi manifestnél. Ha a buildet elfogadták, telepítsd TestFlighttal, hogy lásd az ikonodat a kezdőképernyődön.
Egy reviewer elutasítása több rálátást igényel: a teendők az Apple által elutasított app oldalon vannak, a leggyakoribb okok pedig a miért utasítja el az Apple az appodat cikkben.
Hogy feltöltés előtt ellenőrizd az anyagodat, a Review Kit összegyűjti az ellenőrzőlistámat és olyan Claude Code skilleket, amelyek átnézik a projektedet. Ha elakadt a feltöltésed, és emberi szemre van szükséged, foglalj velem egy órát: videóhívásban, a te képernyődön nézzük át a projektedet. Ha pedig az első megjelenésedre készülsz, kérd az ingyenes diagnózist: sorba rakja a lépéseket, és elküldi neked az Apple-elutasítás elleni ellenőrzőlistámat.
Gyakori kérdések
Miért lát az Apple alfacsatornát, ha az ikonomban semmi átlátszóság nincs?
Mert egy PNG akkor is megtarthat alfacsatornát, ha minden pixele átlátszatlan. Sok eszköz alapértelmezetten hozzáadja exportáláskor. Ellenőrizd a sips -g hasAlpha paranccsal, aztán exportáld újra az ikont e csatorna nélkül.
Javítható az ITMS-90717 távoli frissítéssel?
Nem. Az ikon a binárisba van fordítva, az Assets.car fájlba. A távoli frissítés csak az app JavaScriptjét és erőforrásait változtatja meg. Javítsd az ikont, buildelj újra, aztán töltsd fel ismét.
Lehet átlátszó a sötét ikon?
Igen. Az Apple átlátszó hátteret kér a sötét változathoz, és az Expo megtartja az átlátszóságát. Ebből arra következtetek, hogy az ellenőrzés a fő ikonra, az App Store ikonjára vonatkozik: annak kell átlátszatlannak lennie.
Le kell kerekíteni az iOS ikon sarkait?
Nem. Adj meg egy teli négyzetet: a maszkot az iOS maga alkalmazza. A lekerekített sarkok átlátszó pixeleket hagynak a sarkokban, pontosan azt, amit ez az ellenőrzés elutasít.
Kezeli az Expo az iOS 26 Icon Composer ikonjait?
Igen, az SDK 54 óta: add meg a .icon mappa elérési útját az ios.icon mezőben, szövegként. A prebuild változatlanul másolja, és az Xcode 26 fordítja le. Ha ezzel a formátummal ITMS-90717 hibát kapsz, ellenőrizd az átlátszó rétegeket és a Blur effektet, vagy térj vissza ideiglenesen PNG-re.

