ITMS-90717: korjaa “Invalid large app icon” Expossa
Kirjoittaja: Mehdi Azizi
Julkaistu , 8 min
ITMS-90717: buildisi 1024 x 1024 -ikonissa on läpinäkyvyyttä tai alfakanava. Vie se läpinäkymättömänä, tarkista sipsillä ja tee uusi build.
ITMS-90717 on Applen automaattinen tarkistus, joka tehdään buildillesi. Se kertoo, että sovelluksen suuressa ikonissa, siinä 1024 x 1024 pikselin kuvassa, jonka App Store näyttää, on läpinäkyvyyttä tai alfakanava. Korjaus: neliön muotoinen, läpinäkymätön ikoni, joka on viety ilman alfakanavaa, ja sen jälkeen uusi build.
Expossa PNG-tiedostosi on harvoin syyllinen: prebuild asettaa sen jo valmiiksi valkoiselle taustalle. Luin tämän koodin SDK 57:stä ja tarkistin Solysin, TradaZenin ja Noleran ikonit. Virhe johtuu silloin useimmiten versionhallintaan lisätystä ios-kansiosta tai Icon Composer -tiedostosta. Näin selvität, kummasta on kyse, ja korjaat sen.
Mitä ITMS-90717-virhe tarkoittaa?
Viestin otsikko on "ITMS-90717: Invalid large app icon". Siinä tarkennetaan, että sovelluksesi kuvakatalogin suuri ikoni "can't be transparent or contain an alpha channel": se ei saa olla läpinäkyvä eikä sisältää alfakanavaa. Vanhemmissa viesteissä puhuttiin "Invalid App Store Icon" -virheestä. Sääntö on sama.
Tämä suuri ikoni on App Storen ikoni. Xcoden ikonidokumentaatio selittää sen: App Storessa jaettavan sovelluksen on toimitettava 1024 pisteen ikoninsa kuvakatalogissaan.
Alfakanava on PNG:n neljäs kerros punaisen, vihreän ja sinisen rinnalla. Siihen tallennetaan jokaisen pikselin läpinäkyvyys. Ikoni voi näyttää täysin peittävältä ja silti sisältää tämän kanavan: tämä on se ansa, joka toistuu jokaisessa foorumiketjussa.
Kuten muutkaan ITMS-virheet, tämä ei ole tarkastajan hylkäys. Apple analysoi binäärin toimituksen yhteydessä. Lähetystyökalusta riippuen virhe näkyy validoinnin epäonnistumisena, esimerkiksi koodilla 409.
Tarkista ikonisi sipsillä
Macissa sips on asennettu valmiiksi. Yksi rivi riittää:
sips -g hasAlpha assets/icon.png
Haluat nähdä tuloksen hasAlpha: no. Ajoin 15. lokakuuta 2026 tämän komennon Solysin, TradaZenin ja Noleran app.json-tiedostoissa määritellyille ikoneille: kaikki vastaavat no, kokona 1024 x 1024.
Tein myös testi-ikonin: täysin läpinäkymätön sininen neliö, mutta tallennettu alfakanavan kanssa. sips vastaa yes. Yksikään pikseli ei ole läpinäkyvä, ja silti kanava on olemassa. Siksi niin moni kehittäjä kirjoittaa tämän viestin alle "ikonissani ei ole mitään läpinäkyvyyttä".
Esikatselussa myös tarkastaja (Työkalut, Näytä tarkastaja) listaa kuvan ominaisuudet, alfakanava mukaan lukien.
Korjaus: vie ikoni ilman alfakanavaa
Kolme tapaa, yksinkertaisimmasta tarkimpaan.
1. Esikatselu. Arkisto, Vie, muoto PNG, ja poista Alfa-valinta. Viedyssä tiedostossa ei ole enää alfakanavaa.
2. sips, asentamatta mitään. sips ei poista alfakanavaa PNG:stä. Täytyy kulkea JPEG:n kautta, koska siinä alfakanavaa ei ole:
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
Läpinäkyväkulmaisessa testi-ikonissani kulmat muuttuivat valkoisiksi ja viimeinen rivi vastaa no. JPEG-välivaihe pakkaa kuvaa hieman, jopa maksimilaadulla: katso lopputulos tarkkaan.
3. ImageMagick. Jos se on asennettuna, voit valita taustavärin:
magick icon.png -background white -alpha remove -alpha off icon-opaque.png
ImageMagickin dokumentaation mukaan -alpha remove asettaa kuvan taustavärin päälle, ja -alpha off kytkee kanavan pois.
Nämä kolme tapaa täyttävät läpinäkyvyyden yhdellä tasaisella värillä. Jos logosi leijui läpinäkyvällä taustalla, siistein ratkaisu on avata lähdetiedosto ja piirtää siihen oikea tausta. Expo vaatii tätä sovellusikonioppaassaan: ikonin on täytettävä koko neliö, ilman pyöristettyjä kulmia tai läpinäkyviä pikseleitä. iOS lisää maskin itse.
Mistä Expo hakee ikonisi ja mitä se sille tekee
Expo lukee ensin ios.icon-kentän ja sitten konfiguraatiosi juuressa olevan icon-kentän. Expon konfiguraatioreferenssin mukaan ios.icon hyväksyy kolme muotoa: PNG:n, olion, jossa on variantit light, dark ja tinted, tai Icon Composerilla luodun .icon-kansion.
Alla oleva taulukko perustuu koodiin, joka luo iOS-ikonin prebuildissa, @expo/prebuild-config 57.0.16 (SDK 57), luettu 15. lokakuuta 2026:
| Mitä määrittelet | Mitä prebuild tekee | ITMS-90717-riski |
|---|---|---|
icon PNG:nä | Litistetään valkoiselle | Pieni |
ios.icon.light | Litistetään valkoiselle | Pieni |
ios.icon.tinted | Litistetään valkoiselle | Pieni |
ios.icon.dark | Läpinäkyvyys säilyy | Applen tarkoittama |
ios.icon .icon-muodossa | Kopioidaan sellaisenaan | Todellinen |
Versioitu ios-kansio | Prebuildia ei ajeta | Todellinen |
PNG:n kanssa Expo poistaa läpinäkyvyyden itse ja korvaa sen valkoisella. Rajattu logo päätyy siis valkoiselle neliölle: ei virhettä, mutta lopputulos ei ehkä ole sitä, mitä halusit. Tumma variantti säilyttää läpinäkyvyytensä, ja se on tarkoituksellista: Apple vaatii tummalle ikonille läpinäkyvän taustan, jotta järjestelmän tarjoama tausta näkyy.
Nolerassa, joka määrittelee kaikki kolme varianttia, sips vastaa no luodulle vaalealle ja sävytetylle ikonille ja yes tummalle. Varianttien commitin päivämäärän perusteella julkaistu versio 1.0.2 sisältää ne. En ole tarkistanut tätä sen IPA:sta.
Versioidun ios-kansion tapaus
Tämä on Expossa todennäköisin syy. Expon jatkuvaa natiivigenerointia käsittelevä sivu sanoo sen suoraan: jos projektissasi on android- ja ios-kansiot, EAS Build ei aja prebuildia. Silloin app.json ei enää vaikuta ikoniin: Applelle lähtee ios-kansion PNG.
Tarkista se projektin juuresta:
sips -g hasAlpha ios/*/Images.xcassets/AppIcon.appiconset/*.png
Jos komento vastaa yes 1024-ikonin kohdalla, korvaa tiedosto läpinäkymättömällä versiollasi samalla nimellä. Jos et ole tehnyt käsin mitään natiivimuutoksia, voit myös poistaa ios-kansion ja lisätä sen .gitignore-tiedostoon: EAS luo sen uudelleen jokaisessa buildissa. Solysissa, TradaZenissa ja Nolerassa git ohittaa tämän kansion.
iOS 26:n muoto: Icon Composer
Icon Composer on Applen työkalu iOS 26:n Liquid Glass -ikoneille. Se tuottaa yhden monikerroksisen .icon-tiedoston. Applen Icon Composer -oppaan mukaan Xcode luo siitä myös kuvat vanhemmille iOS-versioille.
Expo tukee sitä SDK 54:stä lähtien. Määrittelet kansion tekstinä, et koskaan varianttiolion sisällä:
{
"expo": {
"ios": {
"icon": "./assets/app.icon"
}
}
}
Tässä tapauksessa prebuild kopioi kansion koskematta siihen, ja Xcode tekee lopullisen ikonin. Tarvitset siis Xcode 26:n tai uudemman, eli tuoreiden EAS-imagejen version, kuten selitän ITMS-90725-oppaassa.
Elokuusta 2025 lähtien Applen kehittäjäfoorumin ketjuissa on raportoitu ITMS-90717-virheestä .icon-tiedostojen kanssa. Raportoidut syyt: läpinäkyvä PNG-kerros, kangasta suurempi kerros, reunan lähellä oleva ryhmä Blur-efektillä. Mainitut kiertotiet: Blurin poisto, täyteläisen taustan säilyttäminen tai paluu PNG:hen. Ketjuissa ei ole Applen virallista korjausta, ja virheestä raportoitiin vielä elokuussa 2026.
Applen ikonisäännöt ovat samoilla linjoilla: jos tuot taustakerroksen, sen on peitettävä koko pinta ja oltava läpinäkymätön. Sovellukseni käyttävät vielä PNG:tä, joten en ole testannut Icon Composeria tuotannossa. Jos .icon-tiedosto estää lähetyksesi, vaihda ios.icon takaisin PNG:ksi: Expo litistää sen, ja ikonisi läpäisee tämän tarkistuksen.
Tarkista ikoni lopullisesta buildista
IPA:ssa 1024-ikoni ei ole PNG-tiedosto: Xcode kääntää sen Assets.car-tiedostoon. Lataa IPA buildin sivulta expo.devissä ja aja:
unzip -q MonApp.ipa -d ipa
xcrun assetutil --info ipa/Payload/*.app/Assets.car | grep -B3 '"RenditionName" : "App-Icon'
Jokaisella ikonilla näkyy Opaque-kenttä. Käänsin 15. lokakuuta 2026 Xcoden actool-työkalulla Solysin ikonin ja läpinäkyväkulmaisen testi-ikonini. Ensimmäinen antaa "Opaque" : true, jälkimmäinen "Opaque" : false. Apple ei dokumentoi tätä kenttää: pidä sitä vihjeenä, älä Applen tarkistuksena.
Yksi ansa kannattaa tietää: älä testaa sips-komennolla sovelluksen juureen sijoitettuja pieniä PNG-tiedostoja. Xcode kirjoittaa ne alfakanavan kanssa, vaikka lähde olisi läpinäkymätön. Testissäni Solysin ikonilla sips vastaa niille yes.
Muut ikonivirheet
| Koodi | Mitä Apple ilmoittaa | Mistä etsiä Expossa |
|---|---|---|
| ITMS-90717 | 1024-ikoni läpinäkyvä | Vie ilman alfaa |
| ITMS-90704 | 1024-ikoni puuttuu | 1024-merkintä puuttuu |
| ITMS-90022 | iPhone-ikoni puuttuu | Katalogi epätäydellinen |
| ITMS-90023 | iPad-ikoni puuttuu | Katalogi epätäydellinen |
Kolme viimeistä viestiä ovat peräisin lähinnä vuosilta 2017 ja 2018, jolloin Xcode 9 muutti ikonisääntöjä.
Expossa ne ovat käyneet harvinaisiksi. Prebuild kirjoittaa yhden universaalin 1024-ikonin, ja Xcode luo muut koot. Jos ikonia ei ole määritelty, Expo luo jopa valkoisen neliön, jotta lähetys ei epäonnistu. Jos jokin näistä virheistä tulee vastaan, katso versioitua ios-kansiota: AppIcon.appiconset-kansion Contents.json-tiedostossa on oltava merkintä koolla 1024x1024, ja sen viittaaman PNG:n on oltava olemassa.
Ennen seuraavaa lähetystäsi
Ikonin korjaa kymmenessä minuutissa, mutta jokainen virhe maksaa yhden buildin. Muut automaattiset tarkistukset vaativat samaa huolellisuutta, kuten ITMS-90683 lupatekstien osalta tai ITMS-91053 tietosuojamanifestin osalta. Kun build on hyväksytty, asenna se TestFlightilla, niin näet ikonisi kotinäytölläsi.
Tarkastajan hylkäykset vaativat enemmän harkintaa: toimintatapa on sivulla Applen hylkäämä sovellus, ja yleisimmät syyt löytyvät artikkelista miksi Apple hylkää sovelluksen.
Jos haluat tarkistaa kokonaisuuden ennen lähetystä, Review Kit kokoaa tarkistuslistani ja Claude Code -skillit, jotka käyvät projektisi läpi. Jos lähetyksesi jumittaa ja haluat ihmisen silmät asiaan, varaa tunti kanssani: käydään projektisi läpi videopuhelussa, sinun näytölläsi. Ja jos valmistelet ensimmäistä julkaisuasi, tee ilmainen diagnoosi: se laittaa vaiheet järjestykseen ja lähettää sinulle tarkistuslistani Applen hylkäysten välttämiseen.
Usein kysytyt kysymykset
Miksi Apple näkee alfakanavan, vaikka ikonissani ei ole läpinäkyvyyttä?
Koska PNG voi säilyttää alfakanavan, vaikka kaikki sen pikselit olisivat läpinäkymättömiä. Monet työkalut lisäävät sen oletuksena vientivaiheessa. Tarkista komennolla sips -g hasAlpha ja vie ikoni uudelleen ilman kanavaa.
Voiko ITMS-90717:n korjata etäpäivityksellä?
Ei. Ikoni on käännetty binääriin, Assets.car-tiedostoon. Etäpäivitys muuttaa vain sovelluksen JavaScriptiä ja resursseja. Korjaa ikoni, tee uusi build ja lähetä se uudelleen.
Saako tumma ikoni olla läpinäkyvä?
Kyllä. Apple vaatii tummalle variantille läpinäkyvän taustan, ja Expo säilyttää sen läpinäkyvyyden. Päättelen tästä, että tarkistus koskee pääikonia, App Storen ikonia: sen on oltava läpinäkymätön.
Pitääkö iOS-ikonin kulmat pyöristää?
Ei. Toimita täysi neliö: iOS lisää maskin itse. Pyöristetyt kulmat jättävät kulmiin läpinäkyviä pikseleitä, juuri sitä, mitä tämä tarkistus hylkää.
Tukeeko Expo iOS 26:n Icon Composer -ikoneita?
Kyllä, SDK 54:stä lähtien: määrittele .icon-kansion polku ios.icon-kenttään tekstinä. Prebuild kopioi sen sellaisenaan ja Xcode 26 kääntää sen. Jos saat ITMS-90717-virheen tällä muodolla, tarkista läpinäkyvät kerrokset ja Blur-efekti, tai palaa väliaikaisesti PNG:hen.

