ITMS-90717: popravak „Invalid large app icon” u Expou
Autor: Mehdi Azizi
Objavljeno , 8 min
ITMS-90717: ikona 1024 x 1024 u tvom buildu ima prozirnost ili alfa kanal. Izvezi je neprozirnu, provjeri sa sips i napravi novi build.
ITMS-90717 je Appleova automatska provjera tvog builda. Javlja da velika ikona aplikacije, ona od 1024 x 1024 piksela koju prikazuje App Store, sadrži prozirnost ili alfa kanal. Rješenje: kvadratna, neprozirna ikona izvezena bez alfa kanala, a zatim novi build.
S Expoom tvoja PNG datoteka rijetko je krivac: prebuild je već postavlja na bijelu pozadinu. Pročitao sam taj kod u SDK-u 57 i provjerio ikone aplikacija Solys, TradaZen i Nolera. Greška tada najčešće dolazi iz ios mape koja je u gitu ili iz datoteke Icon Composera. Evo kako otkriti što je od toga i kako to popraviti.
Što znači greška ITMS-90717?
Poruka nosi naslov „ITMS-90717: Invalid large app icon”. Navodi da velika ikona u katalogu slika tvoje aplikacije „can't be transparent or contain an alpha channel”: ne smije biti prozirna niti sadržavati alfa kanal. Starije poruke govorile su o „Invalid App Store Icon”. Pravilo je isto.
Ta velika ikona je ikona za App Store. Xcodeova dokumentacija o ikonama to objašnjava: aplikacija koja se distribuira preko App Storea mora u svom katalogu slika imati ikonu od 1024 točke.
Alfa kanal je četvrti sloj PNG-a, uz crveni, zeleni i plavi. U njemu je zapisana prozirnost svakog piksela. Ikona može izgledati potpuno puna, a i dalje imati taj kanal: to je zamka koja se ponavlja u svakoj temi na forumima.
Kao i ostale ITMS greške, ovo nije odbijanje od strane reviewera. Apple je analizirao binarnu datoteku pri isporuci. Ovisno o alatu za slanje, greška se pojavljuje kao neuspjela validacija, na primjer s kodom 409.
Provjeri ikonu sa sips
Na Macu je sips instaliran od početka. Dovoljan je jedan redak:
sips -g hasAlpha assets/icon.png
Želiš vidjeti hasAlpha: no. Dana 15. listopada 2026. pokrenuo sam ovu naredbu na ikonama navedenima u app.json datotekama Solysa, TradaZena i Nolere: sve odgovaraju no, u 1024 x 1024.
Napravio sam i probnu ikonu: plavi kvadrat, potpuno neproziran, ali spremljen s alfa kanalom. sips odgovara yes. Nijedan piksel nije proziran, a kanal je ipak tu. Zato toliko developera ispod ove poruke piše „moja ikona nema nikakvu prozirnost”.
U aplikaciji Preview inspektor (Tools, Show Inspector) također prikazuje svojstva slike, uključujući alfa kanal.
Popravak: izvezi ikonu bez alfa kanala
Tri metode, od najjednostavnije do najpreciznije.
1. Preview. File, Export, format PNG, pa odznači kvačicu Alpha. Izvezena datoteka više nema alfa kanal.
2. sips, bez instaliranja ičega. sips ne uklanja alfa kanal iz PNG-a. Moraš proći kroz JPEG, koji ga nema:
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
Na mojoj probnoj ikoni s prozirnim kutovima kutovi su postali bijeli, a zadnji redak odgovara no. Prolaz kroz JPEG malo komprimira sliku, čak i na maksimalnoj kvaliteti: dobro pogledaj rezultat.
3. ImageMagick. Ako ga imaš instaliranog, sam biraš boju pozadine:
magick icon.png -background white -alpha remove -alpha off icon-opaque.png
Prema dokumentaciji ImageMagicka, -alpha remove postavlja sliku na boju pozadine, a -alpha off isključuje kanal.
Sve tri metode ispunjavaju prozirnost jednom bojom. Ako ti je logo lebdio na prozirnoj pozadini, najčišće je vratiti se na izvornu datoteku i nacrtati pravu pozadinu. Expo to traži u svom vodiču za ikonu aplikacije: ikona mora ispuniti cijeli kvadrat, bez zaobljenih kutova i prozirnih piksela. iOS sam primjenjuje masku.
Odakle Expo uzima tvoju ikonu i što s njom radi
Expo prvo čita ios.icon, a zatim polje icon u korijenu konfiguracije. Prema referenci Expoove konfiguracije, ios.icon prihvaća tri oblika: PNG, objekt s varijantama light, dark i tinted ili .icon mapu napravljenu u Icon Composeru.
Sljedeća tablica dolazi iz koda koji generira iOS ikonu pri prebuildu, @expo/prebuild-config 57.0.16 (SDK 57), pročitanog 15. listopada 2026.:
| Što navedeš | Što radi prebuild | Rizik od ITMS-90717 |
|---|---|---|
icon kao PNG | Spljošten na bijelu pozadinu | Nizak |
ios.icon.light | Spljošten na bijelu pozadinu | Nizak |
ios.icon.tinted | Spljošten na bijelu pozadinu | Nizak |
ios.icon.dark | Prozirnost se zadržava | Apple to traži |
ios.icon kao .icon | Kopiran bez izmjena | Stvaran |
ios mapa u gitu | Prebuild se ne pokreće | Stvaran |
S PNG-om Expo sam uklanja prozirnost i zamjenjuje je bijelom bojom. Izrezani logo tako završi na bijelom kvadratu: nema greške, ali izgled možda nije onakav kakav si htio. Tamna varijanta zadržava prozirnost, i to namjerno: Apple traži prozirnu pozadinu za tamnu ikonu, kako bi se vidjela pozadina koju daje sustav.
Na Noleri, koja navodi sve tri varijante, sips odgovara no za generiranu svijetlu i obojenu ikonu, a yes za tamnu. Sudeći po datumu commita tih varijanti, verzija 1.0.2, koja je objavljena, ih sadrži. To nisam provjerio u njenom IPA-u.
Slučaj kad je ios mapa u gitu
To je najvjerojatniji uzrok s Expoom. Expoova stranica o kontinuiranom generiranju nativnog koda to kaže: ako tvoj projekt sadrži mape android i ios, EAS Build ne pokreće prebuild. Tvoj app.json tada više ne utječe na ikonu: Appleu odlazi PNG iz ios mape.
Provjeri to iz korijena projekta:
sips -g hasAlpha ios/*/Images.xcassets/AppIcon.appiconset/*.png
Ako naredba odgovori yes za ikonu od 1024, zamijeni tu datoteku svojom neprozirnom verzijom, pod istim imenom. Ako nisi ručno radio nikakve nativne izmjene, možeš i obrisati ios mapu i dodati je u .gitignore: EAS će je ponovno generirati pri svakom buildu. Na Solysu, TradaZenu i Noleri git ignorira tu mapu.
Format iz iOS-a 26: Icon Composer
Icon Composer je Appleov alat za Liquid Glass ikone iOS-a 26. Stvara jednu .icon datoteku s više slojeva. Prema Appleovom vodiču za Icon Composer, Xcode iz nje izvlači i slike za starije verzije iOS-a.
Expo ga podržava od SDK-a 54. Mapu navodiš kao tekst, nikad unutar objekta s varijantama:
{
"expo": {
"ios": {
"icon": "./assets/app.icon"
}
}
}
U tom slučaju prebuild kopira mapu bez ikakvih izmjena, a konačnu ikonu izrađuje Xcode. Zato ti treba Xcode 26 ili noviji, onaj iz novijih EAS imagea, kako objašnjavam u vodiču o ITMS-90725.
Od kolovoza 2025. na Appleovom forumu za developere teme prijavljuju ITMS-90717 s .icon datotekama. Navedeni mogući uzroci: prozirni PNG sloj, sloj veći od platna, grupa s efektom Blur blizu ruba. Spomenuta zaobilazna rješenja: isključiti Blur, zadržati punu pozadinu ili se vratiti na PNG. Te teme ne donose nikakav službeni Appleov popravak, a greška je bila prijavljivana još u kolovozu 2026.
Appleova pravila za ikone idu u istom smjeru: ako uvezeš pozadinski sloj, mora pokrivati cijelu površinu i biti neproziran. Moje aplikacije još koriste PNG, pa Icon Composer nisam testirao u produkciji. Ako ti .icon datoteka blokira slanje, vrati ios.icon na PNG: Expo će ga spljoštiti i tvoja ikona će proći ovu provjeru.
Provjeri ikonu u konačnom buildu
U IPA-u ikona od 1024 nije PNG datoteka: Xcode je kompajlira u Assets.car. Preuzmi IPA sa stranice builda na expo.dev, pa pokreni:
unzip -q MyApp.ipa -d ipa
xcrun assetutil --info ipa/Payload/*.app/Assets.car | grep -B3 '"RenditionName" : "App-Icon'
Svaka ikona prikazuje polje Opaque. Dana 15. listopada 2026. kompajlirao sam s actool, Xcodeovim alatom, ikonu Solysa i svoju probnu ikonu s prozirnim kutovima. Prva izlazi kao "Opaque" : true, druga kao "Opaque" : false. Apple ne dokumentira to polje: shvati ga kao trag, ne kao Appleovu provjeru.
Zamka koju trebaš znati: ne testiraj sa sips male PNG datoteke u korijenu aplikacije. Xcode ih zapisuje s alfa kanalom, čak i kad je izvor neproziran. U mom testu s ikonom Solysa sips za njih odgovara yes.
Ostale greške s ikonama
| Kod | Što Apple javlja | Smjer s Expoom |
|---|---|---|
| ITMS-90717 | Prozirna ikona od 1024 | Izvesti bez alfa kanala |
| ITMS-90704 | Nema ikone od 1024 | Nedostaje unos za 1024 |
| ITMS-90022 | Nema ikone za iPhone | Nepotpun katalog |
| ITMS-90023 | Nema ikone za iPad | Nepotpun katalog |
Zadnje tri poruke uglavnom potječu iz 2017. i 2018., kad je Xcode 9 promijenio pravila za ikone.
S Expoom su postale rijetke. Prebuild zapisuje jednu univerzalnu ikonu od 1024, a Xcode generira ostale veličine. Ako nisi naveo ikonu, Expo čak stvara bijeli kvadrat, da izbjegne neuspjeh pri slanju. Ako dobiješ neku od tih grešaka, pogledaj ios mapu u gitu: datoteka Contents.json u AppIcon.appiconset mora imati unos veličine 1024x1024, a PNG koji navodi mora postojati.
Prije sljedećeg slanja
Ikona se popravi za deset minuta, ali svaka greška košta jedan build. Ostale automatske provjere traže istu pažnju, poput ITMS-90683 za tekstove dozvola ili ITMS-91053 za privacy manifest. Kad build bude prihvaćen, instaliraj ga preko TestFlighta da vidiš svoju ikonu na početnom zaslonu.
Odbijanja od strane reviewera traže više odmaka: postupak je na stranici aplikacija koju je Apple odbio, a najčešći razlozi su u tekstu zašto Apple odbija aplikaciju.
Da provjeriš svoj projekt prije slanja, Review Kit objedinjuje moju checklistu i Claude Code skillove koji pregledavaju tvoj projekt. Ako ti je slanje zapelo i želiš ljudski pogled, rezerviraj sat vremena sa mnom: prolazimo kroz tvoj projekt videopozivom, na tvom ekranu. A ako pripremaš prvo objavljivanje, napravi besplatnu dijagnozu: posložit će korake po redu i poslati ti moju checklistu protiv Appleovih odbijanja.
Česta pitanja
Zašto Apple vidi alfa kanal kad moja ikona nema nikakvu prozirnost?
Zato što PNG može zadržati alfa kanal čak i kad su mu svi pikseli neprozirni. Mnogi alati ga po defaultu dodaju pri izvozu. Provjeri sa sips -g hasAlpha, pa ponovno izvezi ikonu bez tog kanala.
Može li se ITMS-90717 popraviti udaljenim ažuriranjem?
Ne. Ikona je kompajlirana u binarnu datoteku, u Assets.car. Udaljeno ažuriranje mijenja samo JavaScript i resurse aplikacije. Popravi ikonu, napravi novi build i ponovno ga pošalji.
Smije li tamna ikona biti prozirna?
Da. Apple traži prozirnu pozadinu za tamnu varijantu, a Expo zadržava njenu prozirnost. Iz toga zaključujem da provjera cilja glavnu ikonu, onu za App Store: ona mora biti neprozirna.
Trebam li zaobliti kutove iOS ikone?
Ne. Daj puni kvadrat: iOS sam primjenjuje masku. Zaobljeni kutovi ostavljaju prozirne piksele u kutovima, upravo ono što ova provjera odbija.
Podržava li Expo Icon Composer ikone iz iOS-a 26?
Da, od SDK-a 54: navedi putanju do .icon mape u ios.icon, kao tekst. Prebuild je kopira bez izmjena, a Xcode 26 je kompajlira. Ako s tim formatom dobiješ ITMS-90717, provjeri prozirne slojeve i efekt Blur ili se privremeno vrati na PNG.

