ITMS-90725: إصلاح SDK version issue في Expo
بقلم Mehdi Azizi
نُشر في ، 7 د
ITMS-90725 تعني أن تطبيقك مبني بـ SDK قديم لنظام iOS. منذ 28 أبريل 2026 تشترط Apple استخدام Xcode 26: انتقل إلى Expo SDK 54 أو أحدث وأعد البناء.
ITMS-90725 فحص تلقائي تجريه Apple على البناء (build) الخاص بك، ويعني أن التطبيق مبني بـ SDK لنظام iOS أقدم من الحد الأدنى المطلوب. حتى 15 أكتوبر 2026، تذكر Apple أن التطبيقات المرسلة إلى App Store Connect منذ 28 أبريل 2026 يجب أن تُبنى بـ Xcode 26 أو أحدث وبـ SDK iOS 26. مع Expo، كل شيء يتحدد في صورة البناء على EAS: بدءًا من Expo SDK 54، تحتوي الصورة المختارة افتراضيًا على Xcode 26.
تطبيقاتي Solys وTradaZen وNolera تعمل على Expo SDK 57، دون فرض أي صورة في eas.json: فـ EAS يختار إصدار Xcode بنفسه. إليك كيف تتحقق من تطبيقك، وماذا تفعل إن كان مشروعك أقدم.
ماذا يعني الخطأ ITMS-90725؟
عنوان الرسالة هو «ITMS-90725: SDK version issue». تذكر الرسالة الـ SDK الذي بُني به تطبيقك، ثم الحد الأدنى المطلوب وإصدار Xcode الذي يحتويه. في منتدى مطوري Apple مثلًا، بدأت رسالة من عام 2024 هكذا: «This app was built with the iOS 16.2 SDK»، تليها متطلبات تلك الفترة.
الـ SDK هو مجموعة مكتبات iOS التي يبني بها Xcode تطبيقك. كل إصدار من Xcode يأتي بالـ SDK الخاص به: Xcode 26 يحتوي على SDK iOS 26. البناء بـ SDK حديث لا يعني التخلي عن أجهزة iPhone القديمة. فالحد الأدنى لإصدار iOS الذي يقبله تطبيقك إعداد منفصل، اسمه هدف النشر (deployment target).
مثل باقي أخطاء ITMS، هذا ليس رفضًا من مراجع بشري. الفحص تلقائي ويخص الملف الثنائي المرسل.
ما إصدار Xcode الذي تشترطه Apple اليوم؟
هذا ما تقوله صفحة المتطلبات القادمة من Apple وصفحة الإرسال إلى App Store، كما اطلعت عليهما في 15 أكتوبر 2026:
| التاريخ | المتطلب |
|---|---|
| 28 أبريل 2026 | Xcode 26، SDK iOS 26 |
| 9 سبتمبر 2026 | هدف iOS 13 كحد أدنى |
| أبريل 2027 | SDK iOS 27، هدف iOS 15 |
القاعدة التي تُطلق ITMS-90725 هي الأولى. البناء المصنوع بـ Xcode 16 وSDK iOS 18 لم يعد مقبولًا. الثانية تخص الحد الأدنى المستهدف، لا الـ SDK. والثالثة معلنة لشهر أبريل 2027، دون يوم محدد على الصفحة وقت الاطلاع. وتدعو Apple منذ الآن إلى البناء والاختبار بـ Xcode 27.
هذا المتطلب يرتفع بانتظام، ودائمًا في الربيع. تحتفظ صفحة Apple نفسها بأثر عدة مواعيد: Xcode 14.1 في 25 أبريل 2023، وXcode 15 في 29 أبريل 2024، وXcode 26 في 28 أبريل 2026. قبل كل ربيع، أعد قراءتها بدل الاعتماد على مقال، بما في ذلك هذا المقال.
تحذير أم حظر: كيف تفرّق بينهما؟
قبل الموعد النهائي، يصل ITMS-90725 كتحذير. في 2024، على منتدى Apple، كانت الرسالة الإلكترونية توضح أن التسليم نجح وتنصح بالإصلاح في الإرسال التالي. بعد الموعد، تكتب Apple أن التطبيقات «يجب» أن تُبنى بالـ SDK المطلوب لكي تُرسل: لم يعد البناء مقبولًا.
| المؤشر | تحذير | حظر |
|---|---|---|
| تاريخ الإرسال | قبل الموعد | بعد الموعد |
| قبول الإرسال | نعم | لا |
| ما تفعله | الإصلاح في التالي | بناء جديد |
تحذير ITMS-90725 عدّ تنازلي. البناء يمر اليوم، لكن التالي، إن بُني بالطريقة نفسها، سيُرفض بعد الموعد. أصلحه ما دمت غير مستعجل بتحديث طارئ.
إصلاح ITMS-90725 في مشروع Expo
مع EAS، يُبنى تطبيقك على أجهزة Mac لدى Expo، كما أشرح في نشر تطبيق iOS بدون Mac. إصدار Xcode يعتمد على صورة البناء. إن لم تحدد image في eas.json، يستخدم EAS الاسم المستعار auto: فيختار الصورة حسب إصدار Expo SDK لديك.
إليك الصورة المرتبطة بكل SDK وفق توثيق بنية EAS، المحدّث في 8 أكتوبر 2026:
| Expo SDK | Xcode في الصورة | ITMS-90725 |
|---|---|---|
| 57 | 26.6 | لا |
| 56 | 26.4 | لا |
| 55 | 26.2 | لا |
| 54 | 26.0 | لا |
| 53 | 16.4 | نعم |
| 52 | 16.2 | نعم |
- انظر إلى الصورة التي استخدمها آخر بناء لديك. في صفحة البناء على expo.dev، يعرض قسم «Spin up build environment» في السجلات اسمها وإصدار Xcode فيها.
- إن كنت على SDK 54 أو أحدث، ابحث عن صورة مفروضة. سطر
imageيشير إلى Xcode 16، مثلmacos-sequoia-15.6-xcode-16.4، يكفي لإحداث الخطأ. يقدمها توثيق Expo على أنها صورة SDK 54 لمن لا يريد Xcode 26: منذ 28 أبريل 2026، يؤدي هذا الاختيار إلى الرفض. احذف السطر: سيعود EAS إلى الصورة الافتراضية. - إن كنت على SDK 53 أو أقدم، ارفع إصدار الـ SDK. هذه توصية Expo في إعلانها بتاريخ 27 أبريل 2026: الانتقال إلى SDK 54 على الأقل.
- أعد البناء وأرسله من جديد. الـ SDK مثبّت في الملف الثنائي: التحديث عن بُعد لا يغيّر شيئًا.
الحل المؤقت لـ SDK قديم
يقدم إعلان Expo نفسه خيارًا إن لم تستطع الترقية فورًا: فرض صورة Xcode 26 في eas.json، داخل ملف تعريف الإنتاج.
{
"build": {
"production": {
"ios": {
"image": "macos-sequoia-15.6-xcode-26.2"
}
}
}
}
تحذّر Expo: ليست كل إصدارات الـ SDK متوافقة مع Xcode 26، والنتيجة تعتمد أيضًا على مكتباتك. اعتبره مهلة مؤقتة، لا إصلاحًا. إن فشل البناء أثناء الترجمة البرمجية، يبقى الطريق الوحيد هو ترقية الـ SDK.
ترقية الـ SDK، إصدارًا تلو الآخر
يوصي دليل الترقية من Expo بالترقية إصدارًا واحدًا في كل مرة، لتكتشف ما يتعطل في كل خطوة. للانتقال من SDK 53 إلى SDK 54:
npm install expo@^54.0.0
npx expo install --fix
npx expo-doctor
إن كان مجلد ios لديك مولّدًا بواسطة Expo، فاحذفه: سيُعاد إنشاؤه في البناء التالي. ثم اختبر التطبيق على جهاز iPhone قبل تكرار العملية للإصدار التالي.
نقطة يجب معرفتها قبل استهداف أحدث SDK. وفق جدول إصدارات Expo، يقبل SDK 54 و55 نظام iOS 15.1 وما بعده، بينما يقبل SDK 56 و57 نظام iOS 16.4 وما بعده فقط. إذن الانتقال إلى SDK 56 يستبعد أجهزة iPhone التي بقيت على iOS 15. وSDK 54 يكفي لإزالة ITMS-90725.
التحقق من SDK البناء قبل الإرسال
يسجّل Xcode في ملف Info.plist لكل بناء الـ SDK وإصدار Xcode المستخدمين. نزّل ملف IPA من صفحة البناء على expo.dev، ثم شغّل على جهاز Mac:
unzip -q MyApp.ipa -d ipa
plutil -extract DTSDKName raw ipa/Payload/*.app/Info.plist
plutil -extract DTXcode raw ipa/Payload/*.app/Info.plist
لبناء موجّه إلى App Store، يجب أن تبدأ القيمة الأولى بـ iphoneos26. والثانية ترمز إلى إصدار Xcode: في بناء لتطبيق Nolera مصنوع بـ Xcode 26.2 للمحاكي، أحصل على 2620. إن قرأت iphoneos18 أو قيمة تبدأ بـ 16، فسيُرفض البناء.
إن كنت تبني على جهاز Mac الخاص بك، فإصدار Xcode لديك هو المهم، لا صورة EAS. يعرض الأمر xcodebuild -version الإصدار النشط. المنطق نفسه في التكامل المستمر: إصدار Xcode يعتمد على الجهاز المختار. في 2024، على منتدى Apple، كان مطورون يتلقون ITMS-90725 لأن جهاز GitHub Actions لديهم يعمل بنظام macOS أقدم من أن يدعم Xcode 15.
بعد إرسال البناء الصحيح، اختبره في TestFlight قبل تقديمه. كل بناء جديد يمر أيضًا بالمراجعة، بالمدد الموضحة في مدة مراجعة App Store.
أرسل بناءك دون مفاجآت
يمكن تجنّب ITMS-90725 في دقيقة واحدة: تحقق من الصورة والـ SDK قبل كل بناء إنتاج. الفحوص التلقائية الأخرى تتطلب الدقة نفسها، مثل ITMS-90683 الخاص بعبارات طلب الأذونات. أما رفض المراجع البشري فيتطلب تأنيًا أكبر: الخطوات موجودة في صفحة تطبيق مرفوض من Apple، وأكثر الأسباب شيوعًا في لماذا ترفض Apple تطبيقًا.
للتحقق من ملفك قبل الإرسال، يجمع Review Kit قائمة التحقق الخاصة بي ومهارات (skills) لـ Claude Code تراجع مشروعك. إن تعثّر إرسالك وأردت نظرة بشرية، احجز ساعة معي: نراجع مشروعك عبر مكالمة فيديو، على شاشتك. وإن كنت تحضّر إصدارك الأول، أجرِ تشخيصك المجاني: يرتّب لك الخطوات ويرسل إليك قائمتي لتجنب رفض Apple.
الأسئلة الشائعة
هل يمنعني ITMS-90725 من نشر تطبيقي؟
بعد الموعد الذي حددته Apple، نعم: لم يعد البناء مقبولًا ويجب بناء نسخة جديدة. قبل الموعد، هو تحذير: يمر البناء، لكن التالي سيُرفض إن بُني بالطريقة نفسها.
هل يجب التخلي عن أجهزة iPhone القديمة للبناء بـ SDK iOS 26؟
لا. SDK البناء والحد الأدنى لإصدار iOS إعدادان منفصلان. مع Expo، إصدار Expo SDK لديك هو الذي يحدد هذا الحد الأدنى: iOS 15.1 لـ SDK 54 و55، وiOS 16.4 لـ SDK 56 و57.
هل يمكن إصلاح ITMS-90725 بتحديث عن بُعد؟
لا. الـ SDK يُسجَّل في الملف الثنائي لحظة البناء. التحديث عن بُعد لا يغيّر إلا JavaScript والموارد. يجب إعادة البناء بـ Xcode 26 وإرساله من جديد.
كيف أعرف إصدار Xcode الذي يستخدمه EAS؟
افتح سجلات البناء على expo.dev، في قسم «Spin up build environment». اسم الصورة يدل على إصدار Xcode، مثل macos-tahoe-26.5-xcode-26.6. القائمة الكاملة في توثيق بنية EAS.
ما الذي سيغيّره متطلب أبريل 2027؟
وفق صفحة الإرسال لدى Apple، سيلزم البناء بـ SDK iOS 27 واستهداف iOS 15 على الأقل. من جهة EAS، تخطط Expo لصورة بـ Xcode 27 لإصدارها القادم SDK 58: تحقق من قائمة صور البناء قبل البناء. أعد قراءة صفحة Apple في الربيع لمعرفة اليوم بالتحديد.

