Slicing: यह क्या है, कार्य सिद्धांत और App Thinning से इसका संबंध

लेखक: IT Sectr प्रकाशित: 2026-04-17 पढ़ने का समय: 11 मिनट

Slicing App Thinning का एक तंत्र है जिसमें App Store स्वचालित रूप से बाइनरी फ़ाइल के कई वेरिएंट बनाता है, जिनमें से प्रत्येक में केवल एक विशिष्ट डिवाइस मॉडल के लिए संसाधन होते हैं। Apple Developer Documentation, 2026 के अनुसार, Slicing असमर्थित कॉन्फ़िगरेशन के लिए संसाधनों को वितरण से बाहर करता है, जिससे इंस्टॉलेशन का आकार कम होता है। आइए कार्य सिद्धांत, स्लाइसिंग वेरिएंट और परिणाम सत्यापन को समझें।

मुख्य निष्कर्ष

  • Slicing — एप्लिकेशन बाइनरी को विभिन्न आर्किटेक्चर, रिज़ॉल्यूशन और iOS वर्जन के लिए वेरिएंट में विभाजित करता है
  • App Store उपयोगकर्ता को केवल उसके डिवाइस के अनुरूप संसाधन प्रदान करता है
  • Asset Catalogs — Slicing में भाग लेने वाले संसाधनों के प्रबंधन के लिए डेवलपर का मुख्य उपकरण
  • GPU परिवार (Apple GPU, PowerVR, Mali) Metal शेडर्स को स्लाइस करते समय भी ध्यान में रखे जाते हैं
  • सत्यापन स्लाइस का Xcode Organizer और App Store Connect Build Metrics के माध्यम से किया जाता है

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) वाले उपकरणों के लिए संकलित किए जाते हैं।

Slicing और सरल आर्किटेक्चर संकलन के बीच अंतर

Xcode कंपाइलर कई आर्किटेक्चर (armv7, arm64, arm64e) के साथ एक फैट बाइनरी बनाता है, लेकिन संसाधनों को नहीं हटाता — सभी रिज़ॉल्यूशन के लिए सभी इमेज .app के अंदर रहती हैं। Slicing आगे जाता है: यह Asset Catalogs, Metal शेडर्स और Swift लाइब्रेरीज़ का विश्लेषण करता है, प्रत्येक स्लाइस से वह हटाता है जो विशिष्ट लक्ष्य के लिए आवश्यक नहीं है। उदाहरण के लिए, @3x ग्राफ़िक्स iPhone SE के स्लाइस में नहीं जाते, और iPhone-विशिष्ट कंट्रोलर (यदि अलग संसाधनों में निकाले गए हों) iPad Air के स्लाइस में नहीं जाते।

Slicing कैसे काम करता है

Slicing प्रक्रिया App Store Connect में बिल्ड अपलोड करने के बाद शुरू होती है और तीन चरणों में होती है: विश्लेषण, स्लाइसिंग और पैकेजिंग। विश्लेषण चरण में, App Store सर्वर बाइनरी फ़ाइल को पार्स करता है, समर्थित आर्किटेक्चर, डिवाइस, स्क्रीन रिज़ॉल्यूशन और iOS वर्जन के बारे में जानकारी निकालता है। App Store सभी व्यावसायिक Apple मॉडलों का उनकी तकनीकी विशिष्टताओं से मैपिंग का उपयोग करता है — डिवाइस डेटाबेस प्रत्येक iOS रिलीज़ के साथ अपडेट होता है।

स्लाइसिंग चरण में, सर्वर प्रत्येक अद्वितीय संयोजन के लिए बाइनरी फ़ाइल की अलग प्रतियां बनाता है। इसके लिए, App Store Asset Catalogs से विशिष्ट टैग (idiom, subtype, scale) वाली इमेज निकालता है, केवल उन्हीं का चयन करता है जो लक्ष्य डिवाइस से मेल खाती हैं, और एक नया संसाधन बंडल इकट्ठा करता है। Swift मानक लाइब्रेरी भी स्लाइसिंग के अधीन है — इसमें से अप्रयुक्त प्रतीकों और विधियों को हटा दिया जाता है (dead code stripping)।

पैकेजिंग चरण में, प्रत्येक स्लाइस को एक अलग वितरण पैकेज में रखा जाता है और मेटाडेटा से जोड़ा जाता है — डिवाइस मॉडलों की एक सूची जिसके लिए यह स्लाइस अभिप्रेत है। जब उपयोगकर्ता एप्लिकेशन डाउनलोड करता है, तो App Store डिवाइस मॉडल, iOS वर्जन और कनेक्शन प्रकार के अनुसार उपयुक्त स्लाइस का चयन करता है। यदि सटीक मिलान नहीं है, तो सर्वर विशेषताओं में सबसे नज़दीकी स्लाइस का उपयोग करता है। Apple सभी वेरिएंट को CloudKit CDN नेटवर्क में दुनिया भर में तेज़ डिलीवरी के लिए संग्रहीत करता है।

App Thinning के संदर्भ में Slicing

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 वेरिएंट

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 कॉन्फ़िगर करना

Xcode में Slicing कॉन्फ़िगरेशन न्यूनतम है — मुख्य कॉन्फ़िगरेशन Asset Catalogs और Build Settings के माध्यम से किया जाता है। Asset Catalog में डिवाइस प्रकार (Any, iPhone, iPad, Apple Watch, Apple TV) द्वारा व्यवस्थित संसाधन होने चाहिए जिनमें स्केल और डिस्प्ले मोड सही ढंग से निर्दिष्ट हो। Xcode स्वचालित रूप से बिल्ड में केवल उन संसाधनों को शामिल करता है जो Deployment Target सेटिंग्स में निर्दिष्ट लक्ष्य उपकरणों से मेल खाते हैं।

Xcode में प्रमुख Slicing सेटिंग Build Setting App Thinning है। उपलब्ध मान:

  • None — Slicing अक्षम है, एप्लिकेशन यूनिवर्सल फैट बाइनरी के रूप में वितरित किया जाता है
  • Automatic — Xcode डिफ़ॉल्ट सेटिंग्स के साथ Slicing सक्षम करता है
  • Manual — डेवलपर Slicing के लिए विशिष्ट संयोजन चुनता है
App Store प्रकाशन के लिए Automatic का उपयोग करें। Manual मोड स्थानीय डिवाइस पर विशिष्ट स्लाइस के परीक्षण के लिए सुविधाजनक है।

General → Deployment Info में Targeted Device Families निर्धारित करता है कि एप्लिकेशन किस प्रकार के उपकरणों के लिए बनाया गया है (iPhone / iPad / Universal)। Slicing स्लाइसिंग करते समय इस पैरामीटर पर निर्भर करता है — यदि एप्लिकेशन केवल iPhone का समर्थन करता है, तो iPad के लिए स्लाइस नहीं बनाया जाता है। Deployment Target (न्यूनतम iOS वर्जन) भी Slicing को प्रभावित करता है: पुराने iOS वर्जन को armv7 स्लाइस की आवश्यकता हो सकती है, जो iOS 13+ के लिए आवश्यक नहीं हैं। Apple नवीनतम स्थिर iOS वर्जन पर Deployment Target सेट करने की अनुशंसा करता है — इससे स्लाइस की संख्या और बाइनरी आकार कम होता है।

Slicing के लिए Asset Catalog पैरामीटर

अधिकतम 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 स्लाइस में दिखाई देगी।

bash
# किसी विशिष्ट डिवाइस के लिए स्लाइस निर्यात करें
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), तो पाइपलाइन चेतावनी जारी करती है।

Slicing परिणामों का सत्यापन

App Store Connect में आर्काइव अपलोड करने के बाद, Apple स्लाइस आकार पर विस्तृत आँकड़े प्रदान करता है। App Store Connect → Activity → बिल्ड चुनें → App Thinning — डिवाइस श्रेणी के अनुसार Estimated App Store Size प्रदर्शित करता है: 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 में भाग नहीं लेने वाले संसाधनों की पहचान करने में मदद मिलती है।

bash
# स्लाइस आकार का विश्लेषण करें
app-size -m "sliced/App.app" \
  --format json

App-size संसाधन श्रेणियों द्वारा विभाजित JSON रिपोर्ट आउटपुट करता है। यदि Slicing सही ढंग से कॉन्फ़िगर किया गया है, तो "images" अनुभाग में केवल एक स्केल सेट (@2x या @3x) होगा, सभी वेरिएंट नहीं। Asset Catalog कॉन्फ़िगरेशन त्रुटि तब प्रकट होती है जब सभी स्केल (@1x, @2x, @3x) स्लाइस में मौजूद हों — इसका मतलब है कि Xcode इन इमेज के लिए लक्ष्य डिवाइस निर्धारित नहीं कर सका, और Slicing काम नहीं किया।

अक्सर पूछे जाने वाले प्रश्न

क्या Slicing TestFlight के माध्यम से वितरित एप्लिकेशन को प्रभावित करता है?

हाँ, TestFlight भी Slicing का समर्थन करता है। जब कोई परीक्षक TestFlight के माध्यम से एप्लिकेशन डाउनलोड करता है, तो Apple सर्वर परीक्षक के डिवाइस के लिए अनुकूलित स्लाइस प्रदान करता है। App Store Connect Enterprise और Ad Hoc बिल्ड को छोड़कर, TestFlight सहित सभी वितरणों के लिए स्वचालित रूप से Slicing को संभालता है।

क्या किसी विशिष्ट संसाधन के लिए Slicing अक्षम किया जा सकता है?

हाँ, Asset Catalogs में प्रत्येक इमेज के लिए कुछ डिवाइस प्रकारों के फ़्लैग हटाए जा सकते हैं। Xcode Attributes Inspector में यह निर्दिष्ट करने की अनुमति देता है कि संसाधन किस Idiom (iPhone, iPad, Apple Watch, Mac) और स्केल के लिए शामिल किया जाना चाहिए। यदि संसाधन सभी उपकरणों के लिए आवश्यक है, तो किसी भी स्केल के साथ Universal का उपयोग करें।

Slicing कस्टम फ्रेमवर्क के साथ कैसे काम करता है?

कस्टम फ्रेमवर्क (.framework) भी Slicing में भाग लेते हैं यदि उन्हें XCFramework (कई आर्किटेक्चर के साथ) के रूप में बनाया गया है। App Store स्लाइस में केवल फ्रेमवर्क का वह आर्किटेक्चर शामिल करता है जो लक्ष्य डिवाइस से मेल खाता है। स्थिर लाइब्रेरी (.a) Slicing के अधीन नहीं हैं — वे बाइनरी फ़ाइल में पूरी तरह से एम्बेड की जाती हैं।

App Store बिल्ड का आकार Xcode Organizer के आकार से भिन्न क्यों होता है?

Xcode Organizer estimated size दिखाता है — Apple के सर्वर पर वास्तविक स्लाइसिंग पर विचार किए बिना एक अनुमानित आकार। App Store Connect Slicing के बाद वास्तविक आकार प्रदर्शित करता है, जो अनुमान से 10–15% कम हो सकता है क्योंकि सर्वर अतिरिक्त अनुकूलन (LZFSE एल्गोरिदम, Zstandard संसाधन संपीड़न) लागू करता है जो स्थानीय रूप से उपलब्ध नहीं हैं।

क्या Slicing SwiftUI संसाधनों का समर्थन करता है?

हाँ, Slicing SwiftUI के साथ पूरी तरह से संगत है। Asset Catalogs SwiftUI द्वारा Image, Color और SymbolImage प्रकारों के माध्यम से उपयोग किए जाते हैं। Slicing वेक्टर और रास्टर इमेज, SF Symbols और Metal शेडर्स पर लागू होता है, भले ही इंटरफ़ेस बनाने के लिए SwiftUI या UIKit का उपयोग किया गया हो।

सारांश

  • Slicing — App Store की ओर से बाइनरी फ़ाइल को स्लाइस करने का तंत्र, किसी विशिष्ट डिवाइस के लिए अनावश्यक संसाधनों को हटाता है
  • तीन आयाम स्लाइसिंग के: CPU आर्किटेक्चर (arm64/arm64e), स्क्रीन रिज़ॉल्यूशन (@2x/@3x), और GPU परिवार (Metal)
  • Asset Catalogs — Slicing में भाग लेने वाले संसाधनों के प्रबंधन का मुख्य उपकरण
  • App Store केवल वे संसाधन प्रदान करता है जो डिवाइस मॉडल, iOS वर्जन और कनेक्शन प्रकार से मेल खाते हैं
  • Xcode Organizer और App Store Connect सभी समर्थित कॉन्फ़िगरेशन के लिए स्लाइस आकार दिखाते हैं
  • App-size Xcode CL Tools से उपयोगिता CI/CD में Slicing दक्षता सत्यापित करने की अनुमति देती है
  • TestFlight Enterprise और Ad Hoc वितरण के विपरीत, Slicing का भी समर्थन करता है

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें