Slicing App Thinning کا ایک طریقہ کار ہے جس میں App Store خود بخود بائنری فائل کی متعدد قسمیں بناتا ہے، جن میں سے ہر ایک میں صرف ایک مخصوص ڈیوائس ماڈل کے وسائل ہوتے ہیں۔ Apple Developer Documentation, 2026 کے مطابق، Slicing غیر تعاون یافتہ کنفیگریشنز کے وسائل کو تقسیم سے خارج کرتا ہے، جس سے انسٹالیشن کا سائز کم ہوتا ہے۔ آئیے کام کرنے کے اصول، سلائسنگ کی قسموں اور نتائج کی تصدیق کو سمجھتے ہیں۔
اہم نکات
Slicing App Thinning کا ایک جزو ہے جو App Store کی جانب سے ایپلیکیشن بائنری کی قسمیں (سلائسز) بنانے کا ذمہ دار ہے۔ جب ڈیویلپر تمام تعاون یافتہ کنفیگریشنز کے لیے کوڈ اور وسائل پر مشتمل ایک یونیورسل فیٹ بائنری اپ لوڈ کرتا ہے، تو App Store اس کا تجزیہ کرتا ہے اور متعدد سلائسز تیار کرتا ہے: A17 پروسیسر والے iPhone کے لیے علیحدہ، M4 والے iPad کے لیے علیحدہ، Apple Watch کے لیے علیحدہ۔ ہر سلائس میں صرف وہی کوڈ ٹکڑے اور وسائل ہوتے ہیں جو آرکیٹیکچر اور ریزولوشن کے اس مخصوص امتزاج کے لیے ضروری ہیں۔
iOS 9 سے پہلے، ڈیویلپر مختلف آلات کے لیے دستی طور پر علیحدہ بائنری فائلیں بناتے تھے یا ایک یونیورسل فیٹ بائنری تقسیم کرتے تھے جس میں سب کچھ ایک ساتھ ہوتا تھا۔ Slicing نے اس عمل کو مکمل طور پر خودکار کر دیا: ڈیویلپر Xcode میں ایک پروجیکٹ تیار کرتا ہے، App Store Connect میں ایک آرکائیو اپ لوڈ کرتا ہے، اور سرور کی جانب Slicing زیادہ سے زیادہ تعداد میں قسمیں بناتا ہے۔ صارف کبھی بھی سلائسنگ کا عمل نہیں دیکھتا — اسے ایک تیار .app ملتا ہے، جو اس کے ڈیوائس کے لیے بہتر بنایا گیا ہوتا ہے۔
Slicing نہ صرف کوڈ اور تصاویر پر بلکہ Metal شیڈرز پر بھی لاگو ہوتا ہے۔ Apple GPU اپنی ہدایات کا سیٹ (Metal Shading Language) استعمال کرتا ہے، جو PowerVR یا ARM Mali کی ہدایات سے مختلف ہے۔ Slicing سلائس میں صرف ہدف ڈیوائس کے GPU خاندان کے شیڈرز شامل کرتا ہے۔ یہ خاص طور پر حسب ضرورت شیڈرز والے گیمز کے لیے اہم ہے — مثال کے طور پر، اعلیٰ معیار کے پوسٹ پروسیسنگ اثرات صرف طاقتور GPU (iPad Pro M4, iPhone 16 Pro Max) والے آلات کے لیے مرتب کیے جاتے ہیں۔
Xcode کمپائلر متعدد آرکیٹیکچرز (armv7, arm64, arm64e) کے ساتھ ایک فیٹ بائنری بناتا ہے، لیکن وسائل کو نہیں ہٹاتا — تمام ریزولوشنز کی تمام تصاویر .app کے اندر رہتی ہیں۔ Slicing آگے بڑھتا ہے: یہ Asset Catalogs، Metal شیڈرز اور Swift لائبریریوں کا تجزیہ کرتا ہے، ہر سلائس سے وہ ہٹاتا ہے جو مخصوص ہدف کے لیے ضروری نہیں ہے۔ مثال کے طور پر، @3x گرافکس iPhone SE کی سلائس میں نہیں جاتے، اور iPhone کے مخصوص کنٹرولرز (اگر علیحدہ وسائل میں نکالے گئے ہوں) iPad Air کی سلائس میں نہیں جاتے۔
Slicing کا عمل App Store Connect میں بلڈ اپ لوڈ کرنے کے بعد شروع ہوتا ہے اور تین مراحل پر مشتمل ہے: تجزیہ، سلائسنگ اور پیکجنگ۔ تجزیہ کے مرحلے میں، App Store سرور بائنری فائل کو پارس کرتا ہے، معاون آرکیٹیکچرز، آلات، اسکرین ریزولوشنز اور iOS ورژنز کے بارے میں معلومات نکالتا ہے۔ App Store تمام تجارتی Apple ماڈلز کی ان کی تکنیکی خصوصیات سے میپنگ کا استعمال کرتا ہے — ڈیوائس ڈیٹا بیس ہر iOS ریلیز کے ساتھ اپ ڈیٹ ہوتا ہے۔
سلائسنگ کے مرحلے میں، سرور ہر منفرد امتزاج کے لیے بائنری فائل کی علیحدہ کاپیاں بناتا ہے۔ اس کے لیے، App Store Asset Catalogs سے مخصوص ٹیگز (idiom, subtype, scale) والی تصاویر نکالتا ہے، صرف ان کا انتخاب کرتا ہے جو ہدف ڈیوائس سے مماثل ہوں، اور ایک نیا وسائل کا بنڈل جمع کرتا ہے۔ Swift معیاری لائبریری بھی سلائسنگ کے تابع ہے — اس میں سے غیر استعمال شدہ علامات اور طریقے ہٹا دیے جاتے ہیں (ڈیڈ کوڈ سٹریپنگ)۔
پیکجنگ کے مرحلے میں، ہر سلائس کو ایک علیحدہ تقسیم پیکیج میں رکھا جاتا ہے اور میٹا ڈیٹا — ڈیوائس ماڈلز کی فہرست جس کے لیے یہ سلائس مخصوص ہے — سے منسلک کیا جاتا ہے۔ جب صارف ایپلیکیشن ڈاؤن لوڈ کرتا ہے، App Store ڈیوائس ماڈل، iOS ورژن اور کنکشن کی قسم کے مطابق مناسب سلائس کا انتخاب کرتا ہے۔ اگر قطعی مماثلت نہ ہو، تو سرور خصوصیات میں قریب ترین سلائس استعمال کرتا ہے۔ Apple تمام اقسام کو CloudKit CDN نیٹ ورک میں دنیا بھر میں تیز ترسیل کے لیے ذخیرہ کرتا ہے۔
Slicing App Thinning کے تین طریقہ کاروں میں سے ایک ہے، لیکن یہ ڈاؤن لوڈ کے سائز کو کم کرنے میں سب سے زیادہ حصہ ڈالتا ہے۔ Bitcode مشین کوڈ کی اصلاح کا ذمہ دار ہے، On-Demand Resources ڈیوائس پر وسائل کے انتظام کا، اور Slicing تقسیم کے مرحلے میں فالتو وسائل کو ہٹانے کا۔ Slicing کے بغیر، پہلے دو طریقہ کار کام کرتے ہیں، لیکن صارفین تمام آلات کے لیے وسائل حاصل کرتے ہیں، جس سے Asset Catalogs کی تعداد کے لحاظ سے سائز 20–40% بڑھ جاتا ہے۔
Slicing اور Bitcode کے درمیان فرق اطلاق کے نقطہ میں ہے: Slicing وسائل کی سطح (تصاویر، شیڈرز، NIB فائلیں) پر کام کرتا ہے، Bitcode مشین کوڈ کی سطح پر۔ Slicing کوڈ کو آرکیٹیکچرز (arm64 vs arm64e) میں تقسیم کرتا ہے، Bitcode Apple کو نئے آرکیٹیکچرز کے لیے کوڈ دوبارہ مرتب کرنے کی اجازت دیتا ہے۔ Bitcode + Slicing ایک ساتھ زیادہ سے زیادہ اصلاح فراہم کرتے ہیں: Bitcode ایک مخصوص آرکیٹیکچر کے لیے کوڈ تیار کرتا ہے، اور Slicing اس آرکیٹیکچر کے لیے غیر ضروری وسائل کو ہٹاتا ہے۔
On-Demand Resources کے ساتھ تعلق — Slicing اور ODR اوورلیپ نہیں ہوتے۔ Slicing طے کرتا ہے کہ کون سے وسائل ڈیوائس کی تقسیم تک پہنچیں گے، جبکہ ODR یہ منظم کرتا ہے کہ یہ وسائل کب لوڈ اور ان لوڈ ہوں گے۔ ڈیویلپر کسی وسائل کو ODR ٹیگ سے نشان زد کر سکتا ہے، اور Slicing اسے سلائس میں شامل کرے گا اگر یہ ڈیوائس سے مماثل ہو۔ Apple کم سے کم انسٹالیشن سائز کے لیے تینوں طریقہ کاروں کو بیک وقت استعمال کرنے کی سفارش کرتا ہے۔
| طریقہ کار | اصلاح کا ہدف | کب لاگو ہوتا ہے | سائز پر اثر |
|---|---|---|---|
| Slicing | وسائل (تصاویر، شیڈرز) | App Store کی جانب | ~30% فالتو وسائل ہٹاتا ہے |
| Bitcode | مشین کوڈ | صارف کے ڈاؤن لوڈ کرنے پر | آرکیٹیکچر کے لیے کوڈ کو بہتر بناتا ہے |
| ODR | ڈیوائس پر وسائل | انسٹالیشن کے بعد | ابتدائی سائز کو 40–60% کم کرتا ہے |
Slicing کئی جہتوں کے مطابق علیحدہ سلائسز بناتا ہے: پروسیسر آرکیٹیکچر، اسکرین کا سائز (ریزولوشن)، iOS ورژن اور GPU خاندان (Metal کے لیے)۔ آرکیٹیکچر CPU ہدایات کے سیٹ کا تعین کرتا ہے: arm64 — بنیادی 64 بٹ سیٹ (iPhone 5s — iPhone X)، arm64e — Pointer Authentication اور PAC سپورٹ کے ساتھ توسیع شدہ سیٹ (iPhone XS اور نئے، A12X+ والے iPad Pro)۔ arm64e کے لیے سلائس میں میموری تحفظ کی ہدایات والا کوڈ شامل ہے جو arm64 ڈیوائسز پر دستیاب نہیں ہے۔
اسکرین ریزولوشن — Slicing کی دوسری اہم جہت ہے۔ Apple پیمانے @1x (iPhone 3GS)، @2x (iPhone 4 — iPhone SE 3)، @3x (iPhone 6 Plus اور نئے) اور iPad مخصوص (اضافی میٹرکس کے ساتھ 2x اور 3x) استعمال کرتا ہے۔ Slicing سلائس میں صرف ہدف ڈیوائس سے مماثل پیمانے کی تصاویر شامل کرتا ہے۔ Xcode میں Asset Catalogs کی مناسب تنظیم کے ساتھ، یہ وسائل کے سیٹ کو دستی طور پر منظم کرنے کی ضرورت کو ختم کرتا ہے — کیٹلاگ میں ایک تصویر شامل کریں، معاون ڈیوائس کی اقسام بتائیں۔
GPU خاندان — تیسری جہت، Metal ایپلیکیشنز کے لیے انتہائی اہم ہے۔ Apple GPU کو نسلوں کے مطابق درجہ بند کرتا ہے: Apple GPU family 1 (A7)، family 2 (A8)، ... family 8 (M4)۔ Metal شیڈرز ہر خاندان کے لیے علیحدہ طور پر مرتب کیے جاتے ہیں، کیونکہ Metal Shading Language ہدایات کا سیٹ ہر GPU نسل کے ساتھ پھیلتا ہے۔ Slicing سلائس میں صرف ہدف ڈیوائس کے GPU خاندان کے شیڈرز شامل کرتا ہے، جو رینڈرنگ کے لیے Metal استعمال کرنے والے گیمز اور ایپلیکیشنز کے سائز کو نمایاں طور پر کم کرتا ہے۔
CPU آرکیٹیکچر براہ راست سلائس کے سائز کو متاثر کرتا ہے: arm64e کوڈ میں اضافی Pointer Authentication (PAC) اور Signed Return Address ہدایات ہوتی ہیں، جو arm64 کے مقابلے میں بائنری فائل کو 5–10% بڑھاتی ہیں۔ تاہم، یہ اضافہ اس حقیقت سے پورا ہو جاتا ہے کہ Slicing arm64e کوڈ صرف A12+ پروسیسر والے آلات کی سلائسز میں شامل کرتا ہے۔ A15 Bionic والے iPhone SE (تیسری نسل) کے لیے، Slicing اس چپ کی صلاحیتوں کے لیے بہتر بنائی گئی ایک علیحدہ سلائس بناتا ہے۔
Xcode میں Slicing کی ترتیب کم سے کم ہے — مرکزی ترتیب Asset Catalogs اور Build Settings کے ذریعے کی جاتی ہے۔ Asset Catalog میں ڈیوائس کی قسم (Any, iPhone, iPad, Apple Watch, Apple TV) کے لحاظ سے منظم وسائل ہونے چاہئیں جن میں پیمانہ اور ڈسپلے موڈ درست طریقے سے بتائے گئے ہوں۔ Xcode خود بخود بلڈ میں صرف ان وسائل کو شامل کرتا ہے جو Deployment Target کی ترتیبات میں بتائے گئے ہدف ڈیوائسز سے مماثل ہوں۔
Xcode میں Slicing کی کلیدی ترتیب Build Setting App Thinning ہے۔ دستیاب اقدار:
General → Deployment Info میں Targeted Device Families طے کرتا ہے کہ ایپلیکیشن کس قسم کے آلات کے لیے بنائی گئی ہے (iPhone / iPad / Universal)۔ Slicing سلائسنگ کرتے وقت اس پیرامیٹر پر انحصار کرتا ہے — اگر ایپلیکیشن صرف iPhone کو سپورٹ کرتی ہے، تو iPad کے لیے سلائس نہیں بنائی جاتی۔ Deployment Target (کم از کم iOS ورژن) بھی Slicing کو متاثر کرتا ہے: پرانے iOS ورژنز کو armv7 سلائسز کی ضرورت ہو سکتی ہے، جو iOS 13+ کے لیے ضروری نہیں ہیں۔ Apple Deployment Target کو تازہ ترین مستحکم iOS ورژن پر سیٹ کرنے کی سفارش کرتا ہے — اس سے سلائسز کی تعداد اور بائنری کا سائز کم ہوتا ہے۔
زیادہ سے زیادہ Slicing کارکردگی کے لیے، Asset Catalogs کو ہر وسائل کے لیے مخصوص ٹیگز استعمال کرنے چاہئیں۔ Xcode Attributes Inspector میں تصاویر کے لیے فراہم کرتا ہے: Width Class (Any, Compact, Regular)، Height Class (Any, Compact, Regular)، Gamut (sRGB, Display P3)، Memory (Any, Low, High)، Graphics (Any, Low, High)۔ ان ٹیگز کو ملا کر، ڈیویلپر کنٹرول کرتا ہے کہ ہر تصویر کس سلائس میں ظاہر ہوگی۔ مثال کے طور پر، Regular Width + Regular Height ٹیگز والی iPad تصویر صرف افقی سمت میں iPad سلائسز میں ظاہر ہوگی۔
# ایک مخصوص ڈیوائس کے لیے سلائس برآمد کریں
xcodebuild -exportArchive \
-archivePath "App.xcarchive" \
-exportPath "sliced/" \
-exportOptionsPlist "export.plist" \
-thinning "iPhone17,2" # iPhone 16 Pro Max
Xcodebuild -thinning پیرامیٹر اور ماڈل شناخت کنندہ کے ساتھ صرف اس ماڈل کے لیے سلائس بناتا ہے۔ شناخت کنندگان کی فہرست Apple ڈیوائس ڈیٹا بیس میں مل سکتی ہے (فارمیٹ: iPhone17,2 — iPhone 16 Pro Max، iPad14,1 — iPad Pro 11 M4)۔ یہ طریقہ App Store Connect میں جمع کرانے سے پہلے سلائس کے سائز کی جانچ کے لیے مفید ہے۔ CI/CD خودکار تصدیق کے لیے اس کمانڈ کو استعمال کر سکتا ہے — اگر سلائس کا سائز حد سے تجاوز کر جائے (مثال کے طور پر موبائل ڈاؤن لوڈ کے لیے 100 MB)، تو پائپ لائن ایک انتباہ جاری کرتی ہے۔
آرکائیو کو App Store Connect میں اپ لوڈ کرنے کے بعد، Apple سلائسز کے سائز کے بارے میں تفصیلی اعدادوشمار فراہم کرتا ہے۔ App Store Connect → Activity → بلڈ منتخب کریں → App Thinning — ڈیوائس کے زمرے کے مطابق تخمینی App Store سائز ظاہر کرتا ہے: iPhone، iPad، Apple Watch، tvOS۔ سائز iOS ورژنز اور پروسیسر کی اقسام کے لحاظ سے تقسیم ہوتے ہیں۔ اگر کوئی سلائس متوقع سائز سے تجاوز کر جائے، تو App Store Connect اسے پیلے انتباہ سے نشان زد کرتا ہے۔
Xcode Organizer کے ذریعے مقامی تصدیق: آرکائیو کرنے کے بعد، Window → Organizer کھولیں، آرکائیو منتخب کریں اور App Thinning Profiles پر کلک کریں۔ Xcode موجودہ پروجیکٹ کنفیگریشن کی بنیاد پر ہر ممکنہ سلائس کے لیے سائز دکھائے گا۔ ایک مخصوص Slicing پروفائل کے ساتھ IPA بنانے کے لیے Export کا آپشن بھی دستیاب ہے۔ Xcode ایک .app-thinning.plist فائل تیار کرتا ہے جس میں معلومات ہوتی ہیں کہ ہر سلائس میں کون سے وسائل شامل ہیں۔
CI/CD میں Slicing کی تصدیق کو خودکار بنانے کے لیے، -thinning کے ساتھ xcodebuild استعمال کریں اور بنائی گئی .app فائلوں کے سائز کا تجزیہ کریں۔ Apple کمانڈ لائن یوٹیلیٹی app-size (Xcode Command Line Tools کے ذریعے انسٹال) فراہم کرتا ہے، جو ایک تفصیلی رپورٹ تیار کرتی ہے: کوڈ کا سائز، زمرے کے لحاظ سے وسائل کا سائز (تصاویر، شیڈرز، NIB)، Swift لائبریریوں کا سائز۔ Asset Catalog کی اصلاح سے پہلے اور بعد میں سلائسز کے سائز کا موازنہ غلط کنفیگریشن کی وجہ سے Slicing میں حصہ نہ لینے والے وسائل کی شناخت میں مدد کرتا ہے۔
# سلائس کے سائز کا تجزیہ کریں
app-size -m "sliced/App.app" \
--format json
App-size وسائل کے زمروں کے لحاظ سے تقسیم شدہ JSON رپورٹ تیار کرتا ہے۔ اگر Slicing صحیح طریقے سے ترتیب دیا گیا ہے، تو «images» سیکشن میں صرف ایک پیمانہ سیٹ (@2x یا @3x) ہوگا، تمام اقسام نہیں۔ Asset Catalog کنفیگریشن کی غلطی اس وقت ظاہر ہوتی ہے جب تمام پیمانے (@1x, @2x, @3x) سلائس میں موجود ہوں — اس کا مطلب ہے کہ Xcode ان تصاویر کے لیے ہدف ڈیوائس کا تعین نہیں کر سکا، اور Slicing کام نہیں کیا۔
اکثر پوچھے گئے سوالات
ہاں، TestFlight بھی Slicing کو سپورٹ کرتا ہے۔ جب کوئی ٹیسٹر TestFlight کے ذریعے ایپلیکیشن ڈاؤن لوڈ کرتا ہے، Apple سرور ٹیسٹر کے ڈیوائس کے لیے بہتر کردہ سلائس فراہم کرتا ہے۔ App Store Connect Enterprise اور Ad Hoc بلڈز کو چھوڑ کر، TestFlight سمیت تمام تقسیمات کے لیے خود بخود Slicing کو ہینڈل کرتا ہے۔
ہاں، Asset Catalogs میں ہر تصویر کے لیے مخصوص ڈیوائس اقسام کے جھنڈے ہٹائے جا سکتے ہیں۔ Xcode Attributes Inspector میں یہ بتانے کی اجازت دیتا ہے کہ وسائل کو کس Idiom (iPhone, iPad, Apple Watch, Mac) اور پیمانے کے لیے شامل کیا جانا چاہیے۔ اگر وسائل تمام آلات کے لیے ضروری ہے، تو کسی بھی پیمانے کے ساتھ Universal استعمال کریں۔
حسب ضرورت فریم ورک (.framework) بھی Slicing میں حصہ لیتے ہیں اگر انہیں XCFramework (متعدد آرکیٹیکچرز کے ساتھ) کے طور پر بنایا گیا ہو۔ App Store سلائس میں صرف فریم ورک کا وہ آرکیٹیکچر شامل کرتا ہے جو ہدف ڈیوائس سے مماثل ہو۔ جامد لائبریریاں (.a) Slicing کے تابع نہیں ہیں — وہ بائنری فائل میں مکمل طور پر ضم کر دی جاتی ہیں۔
Xcode Organizer تخمینی سائز (estimated size) دکھاتا ہے — Apple سرورز پر حقیقی سلائسنگ کو مدنظر رکھے بغیر ایک پیش گوئی شدہ سائز۔ App Store Connect Slicing کے بعد حقیقی سائز ظاہر کرتا ہے، جو تخمینے سے 10–15% کم ہو سکتا ہے کیونکہ سرور اضافی اصلاحات (LZFSE الگورتھم، Zstandard وسائل کمپریشن) لاگو کرتا ہے جو مقامی طور پر دستیاب نہیں ہیں۔
ہاں، Slicing SwiftUI کے ساتھ مکمل طور پر مطابقت رکھتا ہے۔ Asset Catalogs SwiftUI کے ذریعے Image، Color اور SymbolImage اقسام کے ذریعے استعمال ہوتے ہیں۔ Slicing ویکٹر اور راسٹر تصاویر، SF Symbols اور Metal شیڈرز پر لاگو ہوتا ہے، چاہے انٹرفیس بنانے کے لیے SwiftUI یا UIKit استعمال کیا گیا ہو۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں