ITMS-90717: betulkan “Invalid large app icon” dengan Expo
Oleh Mehdi Azizi
Diterbitkan pada , 8 min
ITMS-90717: ikon 1024 x 1024 dalam build anda masih ada ketelusan atau saluran alfa. Eksport secara legap, semak dengan sips, kemudian build semula.
ITMS-90717 ialah semakan automatik Apple pada build anda. Ia memberitahu bahawa ikon besar app, iaitu ikon 1024 x 1024 piksel yang dipaparkan oleh App Store, mengandungi ketelusan atau saluran alfa. Pembetulannya: ikon segi empat sama yang legap, dieksport tanpa saluran alfa, kemudian build baharu.
Dengan Expo, fail PNG anda jarang menjadi puncanya: prebuild sudah pun meletakkannya di atas latar putih. Saya telah membaca kod ini dalam SDK 57 dan menyemak ikon Solys, TradaZen dan Nolera. Ralat ini biasanya datang daripada folder ios yang disimpan dalam git atau fail Icon Composer. Berikut cara mencari puncanya, dan membetulkannya.
Apakah maksud ralat ITMS-90717?
Mesejnya bertajuk "ITMS-90717: Invalid large app icon". Ia menyatakan bahawa ikon besar dalam katalog imej app anda "can't be transparent or contain an alpha channel": ia tidak boleh telus, dan tidak boleh mengandungi saluran alfa. Mesej lama menyebut "Invalid App Store Icon". Peraturannya sama.
Ikon besar ini ialah ikon App Store. Dokumentasi Xcode tentang ikon menerangkannya: app yang diedarkan di App Store mesti menyediakan ikon 1024 mata dalam katalog imejnya.
Saluran alfa ialah lapisan keempat dalam PNG, di sebelah merah, hijau dan biru. Ia menyimpan ketelusan setiap piksel. Ikon boleh kelihatan penuh tetapi masih menyimpan saluran ini: itulah perangkap yang muncul dalam setiap thread forum.
Seperti ralat ITMS yang lain, ini bukan penolakan oleh reviewer. Apple menganalisis binari semasa penghantaran. Bergantung pada alat penghantaran, ralat ini muncul sebagai kegagalan pengesahan, contohnya dengan kod 409.
Semak ikon anda dengan sips
Pada Mac, sips sudah dipasang secara lalai. Satu baris sudah cukup:
sips -g hasAlpha assets/icon.png
Anda mahu melihat hasAlpha: no. Pada 15 Oktober 2026, saya menjalankan arahan ini pada ikon yang diisytiharkan dalam app.json Solys, TradaZen dan Nolera: semuanya menjawab no, dalam saiz 1024 x 1024.
Saya juga membuat ikon ujian: segi empat biru yang legap sepenuhnya, tetapi disimpan dengan saluran alfa. sips menjawab yes. Tiada satu piksel pun yang telus, namun salurannya tetap ada. Itulah sebabnya ramai developer menulis "ikon saya langsung tiada ketelusan" di bawah mesej ini.
Dalam Preview, inspector (Tools, Show Inspector) juga menyenaraikan sifat imej, termasuk saluran alfa.
Membetulkan: eksport ikon tanpa saluran alfa
Tiga kaedah, daripada yang paling mudah kepada yang paling tepat.
1. Preview. File, Export, format PNG, kemudian nyahtanda kotak Alpha. Fail yang dieksport tidak lagi mempunyai saluran alfa.
2. sips, tanpa memasang apa-apa. sips tidak membuang saluran alfa daripada PNG. Anda perlu melalui JPEG, yang tidak mempunyainya:
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
Pada ikon ujian saya yang berbucu telus, bucunya menjadi putih dan baris terakhir menjawab no. Penukaran melalui JPEG memampatkan imej sedikit, walaupun pada kualiti maksimum: periksa hasilnya dengan teliti.
3. ImageMagick. Jika anda sudah memasangnya, anda boleh memilih warna latar:
magick icon.png -background white -alpha remove -alpha off icon-opaque.png
Menurut dokumentasi ImageMagick, -alpha remove meletakkan imej di atas warna latar, dan -alpha off menyahaktifkan saluran tersebut.
Ketiga-tiga kaedah ini mengisi ketelusan dengan warna rata. Jika logo anda terapung di atas latar telus, cara paling kemas ialah membuka semula fail sumber dan melukis latar sebenar. Expo memintanya dalam panduan ikon app: ikon mesti memenuhi seluruh segi empat, tanpa bucu bulat atau piksel telus. iOS sendiri yang menggunakan topeng.
Dari mana Expo mengambil ikon anda, dan apa yang dilakukannya
Expo membaca ios.icon dahulu, kemudian medan icon di akar konfigurasi anda. Menurut rujukan konfigurasi Expo, ios.icon menerima tiga bentuk: PNG, objek dengan varian light, dark dan tinted, atau folder .icon yang dicipta dengan Icon Composer.
Jadual berikut datang daripada kod yang menjana ikon iOS semasa prebuild, @expo/prebuild-config 57.0.16 (SDK 57), dibaca pada 15 Oktober 2026:
| Apa yang anda isytiharkan | Apa yang dilakukan prebuild | Risiko ITMS-90717 |
|---|---|---|
icon dalam PNG | Diratakan atas latar putih | Rendah |
ios.icon.light | Diratakan atas latar putih | Rendah |
ios.icon.tinted | Diratakan atas latar putih | Rendah |
ios.icon.dark | Ketelusan dikekalkan | Dikehendaki Apple |
ios.icon dalam .icon | Disalin seadanya | Nyata |
Folder ios dalam git | Prebuild tidak dijalankan | Nyata |
Dengan PNG, Expo sendiri membuang ketelusan dan menggantikannya dengan putih. Jadi logo tanpa latar akan berakhir di atas segi empat putih: tiada ralat, tetapi hasilnya mungkin bukan yang anda mahukan. Varian gelap mengekalkan ketelusannya, dan itu memang disengajakan: Apple meminta latar telus untuk ikon gelap, supaya latar yang disediakan sistem kelihatan.
Pada Nolera, yang mengisytiharkan ketiga-tiga varian, sips menjawab no untuk ikon terang dan ikon tinted yang dijana, yes untuk yang gelap. Berdasarkan tarikh commit varian ini, versi 1.0.2 yang sedang live mengandungnya. Saya tidak menyemaknya dalam IPA.
Kes folder ios dalam git
Inilah punca paling mungkin dengan Expo. Halaman Expo tentang penjanaan native berterusan menyatakannya: jika projek anda mengandungi folder android dan ios, EAS Build tidak menjalankan prebuild. app.json anda tidak lagi menyentuh ikon: PNG dalam folder ios itulah yang dihantar kepada Apple.
Semaknya dari akar projek:
sips -g hasAlpha ios/*/Images.xcassets/AppIcon.appiconset/*.png
Jika arahan menjawab yes untuk ikon 1024, gantikan fail itu dengan versi legap anda, dengan nama yang sama. Jika anda tidak membuat sebarang perubahan native secara manual, anda juga boleh memadam folder ios dan menambahkannya ke .gitignore: EAS akan menjananya semula pada setiap build. Pada Solys, TradaZen dan Nolera, folder ini diabaikan oleh git.
Format iOS 26: Icon Composer
Icon Composer ialah alat Apple untuk ikon Liquid Glass iOS 26. Ia menghasilkan satu fail .icon dengan beberapa lapisan. Menurut panduan Apple tentang Icon Composer, Xcode turut menghasilkan imej untuk versi iOS yang lebih lama daripadanya.
Expo menyokongnya sejak SDK 54. Anda mengisytiharkan folder itu sebagai teks, bukan dalam objek varian:
{
"expo": {
"ios": {
"icon": "./assets/app.icon"
}
}
}
Dalam kes ini, prebuild menyalin folder tanpa mengubahnya, dan Xcode yang menghasilkan ikon akhir. Jadi anda memerlukan Xcode 26 atau lebih baharu, iaitu versi dalam imej EAS terkini, seperti yang saya terangkan dalam panduan tentang ITMS-90725.
Sejak Ogos 2025, di forum developer Apple, beberapa thread melaporkan ITMS-90717 dengan fail .icon. Punca yang dilaporkan: lapisan PNG telus, lapisan yang lebih besar daripada kanvas, kumpulan dengan kesan Blur berhampiran tepi. Cara mengelak yang disebut: matikan Blur, kekalkan latar penuh, atau kembali kepada PNG. Thread ini tidak memberikan pembetulan rasmi daripada Apple, dan ralat ini masih dilaporkan pada Ogos 2026.
Peraturan Apple tentang ikon menyokong perkara ini: jika anda mengimport lapisan latar, ia mesti meliputi seluruh permukaan dan legap. App saya masih menggunakan PNG, jadi saya belum menguji Icon Composer dalam produksi. Jika fail .icon menyekat penghantaran anda, tukar semula ios.icon kepada PNG: Expo akan meratakannya, dan ikon anda akan lulus semakan ini.
Semak ikon dalam build akhir
Dalam IPA, ikon 1024 bukan fail PNG: Xcode mengkompilnya ke dalam Assets.car. Muat turun IPA dari halaman build di expo.dev, kemudian jalankan:
unzip -q MyApp.ipa -d ipa
xcrun assetutil --info ipa/Payload/*.app/Assets.car | grep -B3 '"RenditionName" : "App-Icon'
Setiap ikon memaparkan medan Opaque. Pada 15 Oktober 2026, saya mengkompil dengan actool, alat Xcode, ikon Solys dan ikon ujian saya yang berbucu telus. Yang pertama keluar sebagai "Opaque" : true, yang kedua sebagai "Opaque" : false. Apple tidak mendokumenkan medan ini: anggap ia sebagai petunjuk, bukan semakan Apple.
Satu perangkap yang perlu diketahui: jangan uji PNG kecil yang diletakkan di akar app dengan sips. Xcode menulisnya dengan saluran alfa, walaupun sumbernya legap. Dalam ujian saya dengan ikon Solys, sips menjawab yes untuk fail tersebut.
Ralat ikon yang lain
| Kod | Apa yang dilaporkan Apple | Petunjuk dengan Expo |
|---|---|---|
| ITMS-90717 | Ikon 1024 telus | Eksport tanpa alfa |
| ITMS-90704 | Ikon 1024 tiada | Entri 1024 hilang |
| ITMS-90022 | Ikon iPhone tiada | Katalog tidak lengkap |
| ITMS-90023 | Ikon iPad tiada | Katalog tidak lengkap |
Tiga mesej terakhir kebanyakannya berasal dari 2017 dan 2018, ketika Xcode 9 mengubah peraturan ikon.
Dengan Expo, ia sudah jarang berlaku. Prebuild menulis satu ikon universal 1024 sahaja, dan Xcode menjana saiz yang lain. Tanpa ikon yang diisytiharkan, Expo malah mencipta segi empat putih, untuk mengelakkan kegagalan semasa penghantaran. Jika salah satu ralat ini muncul, periksa folder ios dalam git: fail Contents.json dalam AppIcon.appiconset mesti mengandungi entri bersaiz 1024x1024, dan PNG yang dirujuknya mesti wujud.
Sebelum penghantaran anda yang seterusnya
Ikon boleh dibetulkan dalam sepuluh minit, tetapi setiap ralat memakan satu build. Semakan automatik lain memerlukan ketelitian yang sama, seperti ITMS-90683 untuk ayat kebenaran atau ITMS-91053 untuk privacy manifest. Setelah build diterima, pasangnya dengan TestFlight untuk melihat ikon anda di skrin utama.
Penolakan oleh reviewer memerlukan lebih banyak pertimbangan: langkah-langkahnya ada di halaman app ditolak oleh Apple, dan sebab yang paling kerap ada dalam kenapa Apple menolak app.
Untuk menyemak projek anda sebelum dihantar, Review Kit menghimpunkan senarai semak saya dan skill Claude Code yang menyemak semula projek anda. Jika penghantaran anda tersekat dan anda mahukan pandangan manusia, tempah sejam dengan saya: kita semak projek anda melalui panggilan video, di skrin anda. Dan jika anda sedang menyediakan pelancaran pertama, buat diagnostik percuma anda: ia menyusun langkah-langkah mengikut urutan dan menghantar senarai semak anti-penolakan Apple saya kepada anda.
Soalan lazim
Kenapa Apple mengesan saluran alfa sedangkan ikon saya langsung tiada ketelusan?
Kerana PNG boleh menyimpan saluran alfa walaupun semua pikselnya legap. Banyak alat menambahkannya secara lalai semasa eksport. Semak dengan sips -g hasAlpha, kemudian eksport semula ikon tanpa saluran ini.
Bolehkah ITMS-90717 dibetulkan dengan kemas kini jarak jauh?
Tidak. Ikon dikompil ke dalam binari, dalam Assets.car. Kemas kini jarak jauh hanya mengubah JavaScript dan sumber app. Betulkan ikon, build semula, kemudian hantar semula.
Bolehkah ikon gelap menjadi telus?
Ya. Apple meminta latar telus untuk varian gelap, dan Expo mengekalkan ketelusannya. Daripada itu saya menyimpulkan bahawa semakan ini menyasarkan ikon utama, iaitu ikon App Store: ikon itulah yang mesti legap.
Perlukah bucu ikon iOS dibulatkan?
Tidak. Sediakan segi empat penuh: iOS sendiri yang menggunakan topeng. Bucu bulat meninggalkan piksel telus di sudut, tepat seperti yang ditolak oleh semakan ini.
Adakah Expo menyokong ikon Icon Composer iOS 26?
Ya, sejak SDK 54: isytiharkan laluan folder .icon dalam ios.icon, sebagai teks. Prebuild menyalinnya seadanya dan Xcode 26 mengkompilnya. Jika berlaku ITMS-90717 dengan format ini, semak lapisan telus dan kesan Blur, atau kembali kepada PNG buat sementara waktu.

