App Thinning — ما هو، من ما يتكون وكيف يعمل

المؤلف: IT Sectr نُشر: 2026-04-17 وقت القراءة: 10 دق

App Thinning هي تقنية من Apple تقلل حجم التطبيق المثبت عن طريق توصيل الموارد الضرورية فقط لجهاز المستخدم المحدد. وفقًا لـ Apple Developer Documentation, 2026، يتضمن App Thinning ثلاث آليات: Slicing و Bitcode و On-Demand Resources. دعونا نستعرض كل مكون وتأثيره على حجم التوزيع.

النقاط الرئيسية

  • App Thinning هو عملية تحسين حجم تطبيق iOS على جانب App Store والجهاز
  • Slicing يقسم الملف الثنائي إلى متغيرات لأهداف معالج مختلفة ودقات شاشة مختلفة
  • Bitcode هو تمثيل وسيط للبرنامج يقوم App Store بإعادة تجميعه لجهاز محدد
  • On-Demand Resources تسمح بتفريغ الموارد بعد استخدامها، مما يوفر مساحة على الجهاز
  • حجم التنزيل يمكن أن ينخفض بنسبة 30–50% حسب مجموعة موارد التطبيق

ما هو App Thinning

App Thinning هي تقنية شاملة لتحسين توزيع تطبيقات iOS قدمتها Apple مع iOS 9 (سبتمبر 2015). الهدف من App Thinning هو تقليل حجم التطبيق الذي يقوم المستخدم بتنزيله على جهازه دون تغيير الكود المصدري أو الوظائف. تعمل التقنية على ثلاثة مستويات: عند البناء (التجميع)، على جانب App Store (التوصيل) وعلى الجهاز (إدارة الموارد).

قبل App Thinning، كان المطورون يضمنون في الملف الثنائي موارد لجميع الأجهزة الممكنة — صور @2x و @3x، كود 32 بت و 64 بت، shaders Metal لوحدات معالجة رسوميات مختلفة. هذا أدى إلى انتفاخ حجم التطبيق: مستخدم iPhone 6 Plus بشاشة Retina HD كان يتلقى موارد متجهة لـ iPad Pro لم تستخدم أبدًا. Apple حلت هذه المشكلة بنقل جزء من عمل التجميع إلى خوادم App Store.

وفقًا لأبحاث Apple (WWDC 2015، Session 412)، يمكن تقليل تطبيق نموذجي يدعم عدة معماريات ودقات بنسبة 30–50% بعد تطبيق App Thinning. بالنسبة للألعاب ذات الكميات الكبيرة من الأنسجة عالية الدقة، يمكن أن تصل الزيادة إلى 70–80%. تواصل Apple تحسين التقنية: أضافت iOS 17 تحسينًا لـ ARM64e وحسنت العمل مع On-Demand Resources للتطبيقات التي تستخدم Swift Package Manager.

المشكلة التي يحلها App Thinning

يتزايد حجم التطبيقات المحمولة باستمرار. وفقًا لـ Sensor Tower (2025)، زاد متوسط حجم تطبيق iOS بنسبة 45% خلال السنوات الخمس الأخيرة. بالنسبة للمستخدمين ذوي خطة بيانات محدودة أو انترنت بطيء، كل ميغابايت يهم. يحل App Thinning هذه المشكلة دون مشاركة المطور — مجرد تمكين الدعم في إعدادات المشروع ورفع البناء إلى App Store Connect.

كيف يعمل App Thinning

تبدأ عملية App Thinning بعد رفع أرشيف التطبيق إلى App Store Connect. App Store يحلل الملف الثنائي ويقسمه إلى قطاعات حسب المعمارية (armv7، arm64، arm64e)، دقات الشاشة (iPhone، iPad) وإصدارات iOS. يتم إنشاء متغير منفصل لكل تركيبة. عندما ينقر المستخدم على “تنزيل”، يحدد App Store طراز الجهاز وإصدار iOS ونوع الاتصال (Wi-Fi / شبكة خلوية) ويرسل المتغير المناسب فقط.

بالنسبة للمستخدم، العملية شفافة — لا يوجد تحديد “إصدار خفيف” أو حوار إعدادات. App Store يختار تلقائيًا المتغير الأنسب بناءً على بيانات الجهاز التي تُرسل إلى الخادم أثناء طلب التنزيل. إذا كان الجهاز على Wi-Fi، قد يرسل App Store متغيرًا بموارد ذات جودة أعلى (على سبيل المثال، فيديو ProRes لـ iPhone 16 Pro). عند التنزيل عبر شبكة خلوية، يتم استخدام أصغر مجموعة ممكنة.

المستوى الثاني من التحسين هو Bitcode. عندما تكون خيار ENABLE_BITCODE مفعلة، يقوم Xcode بتجميع التطبيق ليس إلى كود آلة، وإنما إلى تمثيل LLVM وسيط. يقوم App Store بإعادة تجميع Bitcode لمعمارية معالج المستخدم المحددة، مما يسمح لـ Apple بتطبيق تحسينات المجمع لأجيال الرقائق الجديدة (A17، M4) دون حاجة المطور لتحديث التطبيق. Bitcode إلزامي لـ watchOS و tvOS، ولكنه اختياري لـ iOS.

مكونات App Thinning: Slicing، Bitcode، ODR

يتكون App Thinning من ثلاث آليات مستقلة، كل واحدة منها مسؤولة عن جانبها من التحسين. Slicing يقسم الملف الثنائي إلى متغيرات حسب المعمارية ودقة الشاشة. يقوم المطور بتكوين Slicing عبر Asset Catalogs — يقوم Xcode تلقائيًا بضمان الموارد التي تتطابق مع الجهاز المستهدف فقط في الشريحة. على سبيل المثال، iPhone SE (الجيل الثالث) سيتلقى صور @2x وكود arm64 فقط، بينما iPad Pro M4 سيتلقى صور @3x وكود arm64e.

Bitcode هو LLVM IR (تمثيل وسيط) — تمثيل مستقل عن الآلة للبرنامج. عند تفعيل Bitcode، لا يقوم Xcode بإنشاء كود آلة نهائي، بل يحفظ التمثيل الوسيط. App Store Connect يتلقى Bitcode عند رفع البناء ويعيد تجميعه لمعماريات جميع الأجهزة المدعومة. يسمح Bitcode لـ Apple بتطبيق تحسينات غير متاحة في مرحلة التجميع عند المطور — على سبيل المثال، استخدام تعليمات معالج جديدة (SME، SVE) على رقائق M4.

On-Demand Resources (ODR) هي الآلية الثالثة، والتي تسمح بتفريغ موارد التطبيق بعد استخدامها. يقوم المطور بوسم الموارد (مستويات اللعبة، صور الترحيب، فيديوهات) بعلامات ODR. iOS يقوم بتنزيل الموارد الموسومة عند الطلب في الخلفية ويفرغها عند نقص الذاكرة أو بعد الاستخدام. ODR فعالة خاصة للألعاب ذات كميات كبيرة من المحتوى — يمكن شحن المستويات الأولى مع التطبيق، وتنزيل الباقي عندما يتقدم اللاعب.

متى يتم اختيار كل مكون

يعتمد اختيار آليات App Thinning على نوع التطبيق وجمهوره المستهدف. Slicing يوصى بتفعيله دائمًا — لا يتطلب إجراءات إضافية من المطور سوى تنظيم Asset Catalogs الصحيح ويوفر تخفيضًا ثابتًا بنسبة 20–30%. يجب تفعيل Bitcode إذا كان التطبيق يستخدم shaders Metal مخصصة أو يخطط لدعم معماريات Apple جديدة دون إعادة البناء. ODR مبرر للتطبيقات ذات حجم كبير من المحتوى — الألعاب، محررات الصور، تطبيقات البثّ.

بالنسبة لتطبيق أعمال نموذجي (خلاطات بيانات، نماذج، REST API)، يكفي Slicing وإعداد أدنى لـ ODR لصور الترحيب. الألعاب ذات الرسومات 3D تستفيد من الآليات الثلاث: Slicing يزيل shaders غير الضرورية، Bitcode يحسن العرض لوحدة معالجة الرسوميات، و ODR يفرغ المستويات المنجزة. وفقًا لـ Apple (WWDC 2024)، يقوم المزيج من الآليات الثلاث بتقليل حجم التثبيت الأولي بمعدل 45–55% مقارنة بالبناء الثنائي العام.

الآليةما تفعلأين تعملتتطلب إجراء المطور
Slicingتزيل الموارد للأجهزة الأخرىApp Store + الجهازAsset Catalogs
Bitcodeإعادة التجميع للمعماريةApp StoreENABLE_BITCODE=YES
ODRتحميل الموارد عند الطلبالجهازعلامات ODR في المشروع

إعداد App Thinning في Xcode

لتفعيل App Thinning في مشروع Xcode، هناك عدة خطوات مطلوبة. Slicing يتم تكوينه عبر App Thinning في إعدادات البناء: Build Settings → App Thinning. تتوفر ثلاث قيم: None (بدون تحسين)، Automatic (تكوين تلقائي افتراضي) و Manual مع اختيار متغيرات محددة للاختبار. توصي Apple بـ Automatic لمعظم المشاريع.

بالنسبة لـ Asset Catalogs، من المهم تنظيم الموارد بشكل صحيح: توضع الصور في دليل عام مع تحديد العرض/الارتفاع، ويقوم Xcode تلقائيًا بإنشاء متغيرات @1x، @2x و @3x. Xcode أثناء البناء يضمن فقط الدقات المستخدمة في المشروع. يتم تجميع shaders Metal بشكل منفصل لكل عائلة GPU — Apple GPU، PowerVR، Mali — وهذا أيضًا يتم إدارته عبر Asset Catalogs.

Bitcode يتم تفعيله بالعلامة ENABLE_BITCODE = YES في Build Settings. لـ iOS، هذه العلامة اختيارية (معطّلة افتراضيًا منذ Xcode 14)، ولكنها إلزامية لـ watchOS و tvOS. عند تفعيل Bitcode في مشروع يستخدم مكتبات جهة ثالثة، يجب أن تكون جميعها مجمّعة أيضًا مع Bitcode، وإلا ستفشل البناء. Bitcode يزيد وقت التجميع بنسبة 20–30%، ولكنه يوفر توافقًا كاملًا مع المعماريات المستقبلية.

التحقق من نتائج App Thinning

بعد الرفع إلى App Store Connect، يمكنك التحقق من أحجام الشرائح في قسم Activity → Build Metric. App Store Connect يعرض الحجم التقديري لتطبيق App Store لأجهزة مختلفة. للتحقق المحلي، يوفر Xcode الأمر xcodebuild مع العلامة -exportArchive وخيار thinning لإنشاء الشرائح على جهاز العمل المحلي. يمكن رؤية نتائج Slicing في Organizer (Window → Organizer) بعد الأرشفة — علامة التبويب App Thinning Profiles تعرض الأحجام لأجهزة مختلفة.

bash
# التحقق المحلي من Slicing
xcodebuild -exportArchive \
  -archivePath "App.xcarchive" \
  -exportPath "export/" \
  -exportOptionsPlist "export.plist" \
  -thinning "<thin-for-all-variants>"

Xcodebuild مع العلامة -thinning يقوم بإنشاء ملفات .app لكل تركيبة من المعمارية وعمق البتات و GPU. الوسم <thin-for-all-variants> يقوم بإنشاء جميع المتغيرات الممكنة — مفيد للاختبار. لخطوط التكامل المستمر، يمكن تحديد تركيبة محددة، مثل iPhone14,4 (iPhone SE 3). يمكن تحليل ملفات .app الناتجة باستخدام أداة app-size.

فوائد وتأثير App Thinning

الميزة الرئيسية لـ App Thinning هي تقليل حجم التنزيل للمستخدم النهائي. وفقًا لـ Apple (WWDC 2024)، تطبيق نموذجي يستخدم آليات App Thinning الثلاث يتم تنزيله أسرع بنسبة 40% عبر الشبكة الخلوية ويشغل مساحة أقل بنسبة 35% على القرص الصلب. يؤثر هذا مباشرة على معدل تحويل التثبيت: وفقًا لـ Sensor Tower، كل 10 ميغابايت من حجم التطبيق تقلل التحويل بنسبة 1%.

الميزة الثانية هي التحسين للأجهزة المستقبلية من خلال Bitcode. يمكن لـ Apple إعادة تجميع تطبيقات Bitcode لمعماريات جديدة دون مشاركة المطور. على سبيل المثال، أثناء الانتقال من Intel إلى Apple Silicon (M1)، عملت تطبيقات Bitcode على macOS عبر Rosetta 2 دون حاجة لبناء إضافي. اضطر المطورون الذين لم يفعلوا Bitcode إلى إعادة بناء تطبيقاتهم لـ arm64.

الميزة الثالثة هي أن ODR (الموارد حسب الطلب) تقلل الحمل على تخزين الجهاز. تستخدم الألعاب ذات العشرات من المستويات، مثل Asphalt 8: Airborne، ODR لتحميل مسارات جديدة عندما يتقدم اللاعب. يمكن للمطور تعيين Initial Install Tags للموارد التي تنزل مع التطبيق و Prefetch Tags للمحتوى الذي يتم تحميله في الخلفية بعد التثبيت. تتحكم Apple في حدود ODR: حتى 512 ميغابايت للطلب الواحد وحتى 20 جيجابايت كذاكرة إجمالية على الجهاز.

قيود App Thinning

لدى App Thinning عدة قيود مهمة يجب مراعاتها عند تصميم التطبيق. أولًا، Slicing لا ينطبق على التطبيقات الموزّعة عبر Enterprise (داخلي) أو Ad Hoc — هذه البنيات تحتوي على جميع المتغيرات ولا تمر عبر App Store. لاختبار Slicing، يمكن للمطورين استخدام TestFlight الذي يعالج أيضًا Slicing على خوادم Apple.

ثانيًا، Bitcode يزيد وقت البناء وحجم الأرشيف .xcarchive بنسبة 30–50% تقريبًا. ليست جميع المكتبات الخارجية تدعم Bitcode — إذا كانت حتى تابعية واحدة مجمّعة دون Bitcode، فإن بناء المشروع مع ENABLE_BITCODE سيفشل. توصي Apple بالتحقق من توافق المكتبات قبل تفعيل Bitcode. بالإضافة، لا يدعم Bitcode بشكل كامل Swift Package Manager — بعض حزم Swift قد تعطّل بناء Bitcode.

ثالثًا، On-Demand Resources لا تضمن توفر المحتوى الفوري — يحدث تحميل ODR في الخلفية وقد يتأخر إذا كان الجهاز في وضع البطارية المنخفضة أو ضعف إشارة الشبكة. يجب على المطور تنفيذ معالجة حالات تحميل ODR عبر NSBundleResourceRequest وعرض مؤشر تقدم للمستخدم. يجب ألا يحجر فشل تحميل ODR وظائف التطبيق — ما يسمى بالتدهور الأنيق مطفوب.

الأسئلة الشائعة

هل من الضروري تفعيل App Thinning للنشر على App Store؟

لا، App Thinning ليس 扑̧روريًا. سيتم رفع التطبيق دون App Thinning إلى App Store كملف ثنائي عام واحد يحتوي على جميع متغيرات الموارد. ولكن Apple توصي بشدة بتفعيل App Thinning لأنه يحسن تجربة المستخدم ويقلل الحمل على خوادم App Store.

كيف يمكنني التحقق من حجم التطبيق بعد App Thinning قبل النشر؟

يعرض Xcode Organizer الحجم التقديري لتطبيق App Store لأجهزة مختلفة بعد الأرشفة. App Store Connect في قسم Activity يعرض الأحجام الدقيقة للشرائح بعد رفع البناء. للتحقق المحلي، استخدم xcodebuild مع العلامة -thinning.

هل App Thinning يدعم SwiftUI؟

نعم، App Thinning متوافق تمامًا مع SwiftUI. Slicing يعمل مع Asset Catalogs التي تستخدمها SwiftUI عبر Image و Color. Bitcode يدعم مشاريع SwiftUI بشرط أن تكون جميع التابعيات مجمّعة مع Bitcode أيضًا. تتم إدارة ODR عبر NSBundleResourceRequest بغض النظر عن الإطار.

هل يؤثر App Thinning على وقت بدء التطبيق؟

Slicing لا يؤثر على وقت البدء — الموارد المزالة لا تتم تحميلها. قد يزيد Bitcode وقت البدء قليلًا عند التشغيل الأول بسبب التجميع الفوري JIT. قد يزيد ODR وقت البدء إذا لم يتم تحميل الموارد ذات Initial Install Tags بعد. توصي Apple بوسم الموارد الحرجة فقط كـ Initial Install.

ماذا أفعل إذا كانت مكتبة جهة ثالثة لا تدعم Bitcode؟

إذا كان المشروع يتطلب Bitcode ولكن مكتبة لا تدعمه، هناك خياران: إزالة المكتبة من المشروع والبحث عن بديل متوافق مع Bitcode، أو تعطيل Bitcode لهدف محدد عبر ENABLE_BITCODE في Build Settings. Apple تسمح بتعطيل Bitcode لـ iOS، ولكن watchOS و tvOS تتطلبان دعمًا 扑̧لزاميًا.

الملخص

  • App Thinning هي تقنية شاملة من Apple لتقليل حجم تطبيقات iOS عبر Slicing، Bitcode و ODR
  • Slicing يقسم الملف الثنائي إلى متغيرات لمعمارية ودقة شاشة محددة
  • Bitcode هو تمثيل LLVM يقوم App Store بإعادة تجميعه لمعمارية جهاز المستخدم
  • On-Demand Resources تسمح بتحميل وتفريغ الموارد عند الطلب، مما يوفر المساحة على الجهاز
  • حجم التنزيل ينخفض بنسبة 30–50% مع التكوين الصحيح للآليات الثلاث
  • Xcode Organizer و App Store Connect يوفران أدوات للتحقق من أحجام الشرائح
  • Enterprise وبنيات Ad Hoc لا تخضع لـ Slicing — فقط App Store و TestFlight

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا