# ITMS-90717: תיקון Invalid large app icon ב-Expo

> ITMS-90717: באייקון 1024 x 1024 של ה-build נשארו שקיפות או ערוץ אלפא. מייצאים אותו אטום, בודקים עם sips ובונים build חדש.

עמוד מקורי: [ITMS-90717: תיקון Invalid large app icon ב-Expo](https://devoria.fr/he/blog/itms-90717-invalid-large-app-icon-expo)
כותב: [Mehdi Azizi](https://devoria.fr/he/mehdi-azizi)
פרסום: 2026-11-04
עדכון תוכן אחרון: 2026-11-04


ITMS-90717 היא בדיקה אוטומטית ש-Apple מריצה על ה-build שלך. היא אומרת שהאייקון הגדול של האפליקציה, זה בגודל 1024 x 1024 פיקסלים שמוצג ב-App Store, מכיל שקיפות או ערוץ אלפא. **התיקון: אייקון מרובע ואטום, שמיוצא בלי ערוץ אלפא, ואז build חדש.**

ב-Expo, קובץ ה-PNG שלך הוא כמעט אף פעם לא האשם: ה-prebuild כבר מניח אותו על רקע לבן. קראתי את הקוד הזה ב-SDK 57 ובדקתי את האייקונים של Solys, TradaZen ו-Nolera. ברוב המקרים השגיאה מגיעה מתיקיית `ios` שנמצאת ב-git או מקובץ Icon Composer. הנה איך מוצאים מה מהם, ואיך מתקנים.

## מה המשמעות של השגיאה ITMS-90717?

הכותרת של ההודעה היא "ITMS-90717: Invalid large app icon". היא מפרטת שהאייקון הגדול בקטלוג התמונות של האפליקציה "can't be transparent or contain an alpha channel": אסור שיהיה שקוף, ואסור שיכיל ערוץ אלפא. הודעות ישנות יותר דיברו על "Invalid App Store Icon". זה אותו כלל.

האייקון הגדול הזה הוא האייקון של ה-App Store. [התיעוד של Xcode על אייקונים](https://developer.apple.com/documentation/xcode/configuring-your-app-icon) מסביר: אפליקציה שמופצת ב-App Store חייבת לספק את האייקון של 1024 נקודות בקטלוג התמונות שלה.

ערוץ האלפא הוא השכבה הרביעית של PNG, לצד האדום, הירוק והכחול. הוא שומר את השקיפות של כל פיקסל. **אייקון יכול להיראות מלא ועדיין להחזיק את הערוץ הזה**: זו המלכודת שחוזרת בכל שרשור בפורומים.

כמו שאר שגיאות ה-ITMS, זו לא דחייה של reviewer. Apple ניתחה את הקובץ הבינארי ברגע השליחה. תלוי בכלי השליחה, השגיאה מופיעה ככישלון ולידציה, למשל עם הקוד 409.

## בודקים את האייקון עם sips

ב-Mac, `sips` מותקן מראש. שורה אחת מספיקה:

```bash
sips -g hasAlpha assets/icon.png
```

אתה רוצה לראות `hasAlpha: no`. ב-15 באוקטובר 2026 הרצתי את הפקודה הזו על האייקונים שמוגדרים ב-app.json של Solys, TradaZen ו-Nolera: כולם עונים `no`, ב-1024 x 1024.

הכנתי גם אייקון ניסיון: ריבוע כחול אטום לגמרי, אבל שמור עם ערוץ אלפא. `sips` עונה `yes`. **אף פיקסל לא שקוף, ובכל זאת הערוץ קיים.** בגלל זה כל כך הרבה מפתחים כותבים "לאייקון שלי אין שום שקיפות" מתחת להודעה הזו.

ב-Preview, חלון ה-Inspector (Tools, Show Inspector) מציג גם את המאפיינים של התמונה, כולל ערוץ האלפא.

## התיקון: לייצא את האייקון בלי ערוץ אלפא

שלוש שיטות, מהפשוטה למדויקת.

**1. Preview.** File, Export, פורמט PNG, ואז מבטלים את הסימון בתיבה Alpha. לקובץ המיוצא כבר אין ערוץ אלפא.

**2. sips, בלי להתקין כלום.** `sips` לא מסיר את ערוץ האלפא מ-PNG. צריך לעבור דרך JPEG, שאין לו כזה:

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

באייקון הניסיון שלי עם פינות שקופות, הפינות הפכו ללבנות והשורה האחרונה עונה `no`. המעבר דרך JPEG דוחס קצת את התמונה, גם באיכות המקסימלית: תסתכל על התוצאה מקרוב.

**3. ImageMagick.** אם הוא מותקן אצלך, אתה בוחר את צבע הרקע:

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

לפי [התיעוד של ImageMagick](https://imagemagick.org/command-line-options/#alpha), `-alpha remove` מניח את התמונה על צבע הרקע, ו-`-alpha off` מכבה את הערוץ.

שלוש השיטות האלה ממלאות את השקיפות בצבע אחיד. אם הלוגו שלך ריחף על רקע שקוף, הכי נקי זה לחזור לקובץ המקור ולצייר בו רקע אמיתי. Expo מבקש את זה ב[מדריך שלו לאייקון האפליקציה](https://docs.expo.dev/develop/user-interface/splash-screen-and-app-icon/): האייקון צריך למלא את כל הריבוע, בלי פינות מעוגלות ובלי פיקסלים שקופים. iOS מחיל את המסכה בעצמו.

## מאיפה Expo לוקח את האייקון, ומה הוא עושה איתו

Expo קורא קודם את `ios.icon`, ואז את השדה `icon` ברמה העליונה של הקונפיגורציה. לפי [ה-reference של הקונפיגורציה של Expo](https://docs.expo.dev/versions/latest/config/app/), `ios.icon` מקבל שלוש צורות: PNG, אובייקט עם וריאנטים `light`, `dark` ו-`tinted`, או תיקיית `.icon` שנוצרה עם Icon Composer.

הטבלה הבאה מבוססת על הקוד שמייצר את אייקון ה-iOS ב-prebuild, `@expo/prebuild-config` 57.0.16 (SDK 57), שקראתי ב-15 באוקטובר 2026:

| מה שאתה מגדיר        | מה ה-prebuild עושה   | סיכון ל-ITMS-90717 |
| -------------------- | -------------------- | ------------------ |
| `icon` כ-PNG         | משוטח על רקע לבן     | נמוך               |
| `ios.icon.light`     | משוטח על רקע לבן     | נמוך               |
| `ios.icon.tinted`    | משוטח על רקע לבן     | נמוך               |
| `ios.icon.dark`      | השקיפות נשמרת        | Apple רוצה את זה   |
| `ios.icon` כ-`.icon` | מועתק כמו שהוא       | אמיתי              |
| תיקיית `ios` ב-git   | ה-prebuild לא רץ שוב | אמיתי              |

**עם PNG, Expo מסיר את השקיפות בעצמו ומחליף אותה בלבן.** כך שלוגו בלי רקע נגמר על ריבוע לבן: אין שגיאה, אבל אולי זה לא המראה שרצית. הווריאנט הכהה שומר על השקיפות שלו, וזה בכוונה: Apple מבקשת רקע שקוף לאייקון הכהה, כדי שהרקע שהמערכת מספקת ייראה.

ב-Nolera, שמגדירה את שלושת הווריאנטים, `sips` עונה `no` לאייקון הבהיר ולאייקון ה-tinted שנוצרו, ו-`yes` לכהה. לפי תאריך ה-commit של הווריאנטים האלה, גרסה 1.0.2, שנמצאת באוויר, כוללת אותם. לא בדקתי את זה ב-IPA שלה.

### המקרה של תיקיית ios ב-git

זו הסיבה הכי סבירה ב-Expo. [העמוד של Expo על Continuous Native Generation](https://docs.expo.dev/workflow/continuous-native-generation/) אומר את זה: אם הפרויקט שלך מכיל את התיקיות `android` ו-`ios`, EAS Build לא מריץ את ה-prebuild. **ה-app.json שלך כבר לא נוגע באייקון**: מה שנשלח ל-Apple זה ה-PNG שבתיקיית `ios`.

תבדוק את זה מהתיקייה הראשית של הפרויקט:

```bash
sips -g hasAlpha ios/*/Images.xcassets/AppIcon.appiconset/*.png
```

אם הפקודה עונה `yes` לאייקון ה-1024, תחליף את הקובץ הזה בגרסה האטומה שלך, באותו שם. אם לא עשית שום שינוי native ידני, אפשר גם למחוק את תיקיית `ios` ולהוסיף אותה ל-`.gitignore`: EAS ייצור אותה מחדש בכל build. ב-Solys, TradaZen ו-Nolera, git מתעלם מהתיקייה הזו.

## הפורמט של iOS 26: Icon Composer

Icon Composer הוא הכלי של Apple לאייקוני Liquid Glass של iOS 26. הוא מייצר קובץ `.icon` יחיד עם כמה שכבות. לפי [המדריך של Apple ל-Icon Composer](https://developer.apple.com/documentation/xcode/creating-your-app-icon-using-icon-composer), Xcode מפיק ממנו גם את התמונות לגרסאות iOS ישנות יותר.

Expo תומך בזה מאז SDK 54. מגדירים את התיקייה כמחרוזת, אף פעם לא בתוך אובייקט הווריאנטים:

```json
{
  "expo": {
    "ios": {
      "icon": "./assets/app.icon"
    }
  }
}
```

במקרה הזה, ה-prebuild מעתיק את התיקייה בלי לגעת בה, ו-Xcode הוא זה שמייצר את האייקון הסופי. לכן צריך Xcode 26 ומעלה, זה שמגיע עם ה-images העדכניים של EAS, כמו שאני מסביר במדריך על [ITMS-90725](https://devoria.fr/he/blog/itms-90725-sdk-version-issue-expo).

מאז אוגוסט 2025, בפורום המפתחים של Apple, יש שרשורים שמדווחים על ITMS-90717 עם קבצי `.icon`. הכיוונים שעלו: שכבת PNG שקופה, שכבה גדולה מהקנבס, קבוצה עם אפקט Blur קרוב לקצה. העקיפות שהוזכרו: לכבות את ה-Blur, לשמור על רקע מלא, או לחזור ל-PNG. השרשורים האלה לא נותנים שום תיקון רשמי מ-Apple, והשגיאה עדיין דווחה באוגוסט 2026.

[ההנחיות של Apple לאייקונים](https://developer.apple.com/design/human-interface-guidelines/app-icons) הולכות באותו כיוון: אם אתה מייבא שכבת רקע, היא צריכה לכסות את כל השטח ולהיות אטומה. האפליקציות שלי עדיין משתמשות ב-PNG, אז לא בדקתי את Icon Composer ב-production. **אם קובץ `.icon` חוסם את השליחה שלך, תחזיר את `ios.icon` ל-PNG**: Expo ישטח אותו, והאייקון שלך יעבור את הבדיקה הזו.

## בודקים את האייקון ב-build הסופי

ב-IPA, אייקון ה-1024 הוא לא קובץ PNG: Xcode מקמפל אותו לתוך `Assets.car`. תוריד את ה-IPA מעמוד ה-build ב-expo.dev, ואז תריץ:

```bash
unzip -q MyApp.ipa -d ipa
xcrun assetutil --info ipa/Payload/*.app/Assets.car | grep -B3 '"RenditionName" : "App-Icon'
```

כל אייקון מציג שדה `Opaque`. ב-15 באוקטובר 2026 קימפלתי עם `actool`, הכלי של Xcode, את האייקון של Solys ואת אייקון הניסיון שלי עם הפינות השקופות. הראשון יוצא `"Opaque" : true`, השני `"Opaque" : false`. Apple לא מתעדת את השדה הזה: תתייחס אליו כרמז, לא כבדיקה של Apple.

מלכודת שכדאי להכיר: **אל תבדוק עם `sips` את קובצי ה-PNG הקטנים שיושבים בשורש האפליקציה.** Xcode כותב אותם עם ערוץ אלפא, גם כשהמקור אטום. בבדיקה שלי עם האייקון של Solys, `sips` עונה עליהם `yes`.

## שגיאות האייקון האחרות

| קוד        | מה Apple מדווחת   | כיוון ב-Expo    |
| ---------- | ----------------- | --------------- |
| ITMS-90717 | אייקון 1024 שקוף  | לייצא בלי אלפא  |
| ITMS-90704 | אייקון 1024 חסר   | חסרה רשומת 1024 |
| ITMS-90022 | אייקון iPhone חסר | קטלוג לא שלם    |
| ITMS-90023 | אייקון iPad חסר   | קטלוג לא שלם    |

שלוש ההודעות האחרונות מגיעות בעיקר מ-2017 ו-2018, כש-Xcode 9 שינה את הכללים של האייקונים.

ב-Expo הן הפכו לנדירות. ה-prebuild כותב אייקון אוניברסלי יחיד של 1024, ו-Xcode מייצר את שאר הגדלים. בלי אייקון מוגדר, Expo אפילו יוצר ריבוע לבן, כדי למנוע כישלון בשליחה. **אם אחת השגיאות האלה מופיעה, תסתכל על תיקיית `ios` שב-git**: הקובץ `Contents.json` של `AppIcon.appiconset` צריך להכיל רשומה בגודל `1024x1024`, וה-PNG שהיא מפנה אליו צריך להתקיים.

## לפני השליחה הבאה שלך

אייקון מתקנים בעשר דקות, אבל כל שגיאה עולה לך build. שאר הבדיקות האוטומטיות דורשות אותה הקפדה, כמו [ITMS-90683](https://devoria.fr/he/blog/itms-90683-missing-purpose-string-expo) למשפטי ההרשאה או [ITMS-91053](https://devoria.fr/he/blog/itms-91053-missing-api-declaration-expo) ל-privacy manifest. ברגע שה-build מתקבל, תתקין אותו עם [TestFlight](https://devoria.fr/he/blog/testflight-test-iphone-app-before-submission) כדי לראות את האייקון על מסך הבית שלך.

דחיות של reviewer דורשות יותר פרספקטיבה: התהליך נמצא בעמוד [אפליקציה שנדחתה על ידי Apple](https://devoria.fr/he/expertise/app-rejected-by-apple), והסיבות הנפוצות ביותר נמצאות ב[למה Apple דוחה אפליקציה](https://devoria.fr/he/blog/apple-app-rejection-reasons-real-cases).

כדי לבדוק את התיק שלך לפני השליחה, ה-[Review Kit](https://devoria.fr/he/kits/app-review) מאגד את הצ'קליסט שלי ו-skills של Claude Code שעוברים על הפרויקט שלך. אם השליחה שלך תקועה ואתה רוצה עין אנושית, [תקבע איתי שעה](https://devoria.fr/he/coaching): נעבור על הפרויקט שלך בשיחת וידאו, על המסך שלך. ואם אתה מכין את ההשקה הראשונה שלך, [תעשה את האבחון החינמי](https://devoria.fr/he/diagnostic): הוא מסדר את השלבים לפי הסדר ושולח לך את הצ'קליסט שלי נגד דחיות של Apple.

## שאלות נפוצות

### למה Apple רואה ערוץ אלפא כשלאייקון שלי אין שום שקיפות?

כי PNG יכול להחזיק ערוץ אלפא גם כשכל הפיקסלים שלו אטומים. הרבה כלים מוסיפים אותו כברירת מחדל בייצוא. תבדוק עם `sips -g hasAlpha`, ואז תייצא את האייקון מחדש בלי הערוץ הזה.

### אפשר לתקן את ITMS-90717 עם עדכון מרחוק?

לא. האייקון מקומפל לתוך הקובץ הבינארי, ב-`Assets.car`. עדכון מרחוק משנה רק את ה-JavaScript ואת המשאבים של האפליקציה. תתקן את האייקון, תבנה build חדש, ותשלח אותו שוב.

### האייקון הכהה יכול להיות שקוף?

כן. Apple מבקשת רקע שקוף לווריאנט הכהה, ו-Expo שומר על השקיפות שלו. מזה אני מסיק שהבדיקה מכוונת לאייקון הראשי, זה של ה-App Store: הוא זה שצריך להיות אטום.

### צריך לעגל את הפינות של אייקון ה-iOS?

לא. תספק ריבוע מלא: iOS מחיל את המסכה בעצמו. פינות מעוגלות משאירות פיקסלים שקופים בפינות, בדיוק מה שהבדיקה הזו דוחה.

### Expo תומך באייקוני Icon Composer של iOS 26?

כן, מאז SDK 54: מגדירים את הנתיב לתיקיית ה-`.icon` ב-`ios.icon`, כמחרוזת. ה-prebuild מעתיק אותה כמו שהיא ו-Xcode 26 מקמפל אותה. אם יש ITMS-90717 עם הפורמט הזה, תבדוק שכבות שקופות ואת אפקט ה-Blur, או תחזור זמנית ל-PNG.


## הפרויקט שלך

[Review Kit](https://devoria.fr/he/kits/app-review): הצ'קליסט שלי לבדיקת App Store, הדחיות שקיבלתי מ-Apple ואיך תיקנתי אותן, הצ'קליסט ל-Google Play ושלושה skills ל-Claude Code. ‏169 ‏⁦₪⁩.

[iOS & Android Kit](https://devoria.fr/he/kits/ios): תבנה אפליקציה לאייפון ולאנדרואיד עם Claude Code: קוד ההתחלה של האפליקציות שלי, כל הדרך עד החנויות וכל הקיטים. ‏349 ‏⁦₪⁩.

[אבחון: מה מפריד בינך לבין אפליקציית האייפון שלך](https://devoria.fr/he/diagnostic): 7 שאלות, 60 שניות: תדע מה באמת חוסם אותך מלפרסם את אפליקציית האייפון שלך, תקבל מסלול ב-4 שלבים ואת הקיט שמתאים לך.
