# ITMS-90717: betulkan “Invalid large app icon” dengan Expo

> ITMS-90717: ikon 1024 x 1024 dalam build anda masih ada ketelusan atau saluran alfa. Eksport secara legap, semak dengan sips, kemudian build semula.

Halaman asal: [ITMS-90717: betulkan “Invalid large app icon” dengan Expo](https://devoria.fr/ms/blog/itms-90717-invalid-large-app-icon-expo)
Pengarang: [Mehdi Azizi](https://devoria.fr/ms/mehdi-azizi)
Diterbitkan: 2026-11-04
Semakan kandungan terakhir: 2026-11-04


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](https://developer.apple.com/documentation/xcode/configuring-your-app-icon) 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:

```bash
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:

```bash
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:

```bash
magick icon.png -background white -alpha remove -alpha off icon-opaque.png
```

Menurut [dokumentasi ImageMagick](https://imagemagick.org/command-line-options/#alpha), `-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](https://docs.expo.dev/develop/user-interface/splash-screen-and-app-icon/): 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](https://docs.expo.dev/versions/latest/config/app/), `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](https://docs.expo.dev/workflow/continuous-native-generation/) 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:

```bash
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](https://developer.apple.com/documentation/xcode/creating-your-app-icon-using-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:

```json
{
  "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](https://devoria.fr/ms/blog/itms-90725-sdk-version-issue-expo).

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](https://developer.apple.com/design/human-interface-guidelines/app-icons) 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:

```bash
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](https://devoria.fr/ms/blog/itms-90683-missing-purpose-string-expo) untuk ayat kebenaran atau [ITMS-91053](https://devoria.fr/ms/blog/itms-91053-missing-api-declaration-expo) untuk privacy manifest. Setelah build diterima, pasangnya dengan [TestFlight](https://devoria.fr/ms/blog/testflight-uji-aplikasi-iphone-sebelum-hantar) untuk melihat ikon anda di skrin utama.

Penolakan oleh reviewer memerlukan lebih banyak pertimbangan: langkah-langkahnya ada di halaman [app ditolak oleh Apple](https://devoria.fr/ms/expertise/aplikasi-ditolak-apple), dan sebab yang paling kerap ada dalam [kenapa Apple menolak app](https://devoria.fr/ms/blog/aplikasi-ditolak-apple-5-kes-sebenar).

Untuk menyemak projek anda sebelum dihantar, [Review Kit](https://devoria.fr/ms/kits/app-review) 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](https://devoria.fr/ms/coaching): kita semak projek anda melalui panggilan video, di skrin anda. Dan jika anda sedang menyediakan pelancaran pertama, [buat diagnostik percuma anda](https://devoria.fr/ms/diagnostic): 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.


## Projek anda

[Review Kit](https://devoria.fr/ms/kits/app-review): Senarai semak review App Store saya, penolakan Apple yang telah saya betulkan, senarai semak Google Play dan tiga skill Claude Code. RM 219.

[iOS & Android Kit](https://devoria.fr/ms/kits/ios): Bina app iPhone dan Android anda dengan Claude Code: kod permulaan app saya, laluan hingga ke store dan semua kit. RM 449.

[Diagnostik: apa yang memisahkan anda daripada app iPhone anda](https://devoria.fr/ms/diagnostic): 7 soalan, 60 saat: anda tahu apa yang benar-benar menghalang anda menerbitkan app iPhone, laluan 4 langkah anda dan kit yang sesuai dengan anda.
