App Size Optimization — فعالیت کھونے کے بغیر انسٹالیشن فائل (APK, AAB, IPA) کے سائز کو کم کرنے کے لیے تکنیکوں کا ایک مجموعہ۔ Android Reduce APK Size Guide کے مطابق، سائز میں ہر میگا بائٹ کمی سست انٹرنیٹ والے علاقوں میں انسٹالیشن کنورژن کو 1–2% تک بڑھا سکتی ہے۔ App Thinning — Apple کی کلیدی ٹیکنالوجی جو صرف وہ وسائل فراہم کرتی ہے جن کی کسی مخصوص ڈیوائس کو ضرورت ہوتی ہے۔
اہم نکات
App Size Optimization موبائل ڈیولپمنٹ کا ایک شعبہ ہے جس کا مقصد ایپلیکیشن انسٹالیشن پیکیج کے سائز کو کم سے کم کرنا ہے۔ اس میں مردہ کوڈ اور وسائل کو ہٹانا، تصاویر کو دبانا، لائبریریوں کو بہتر بنانا، مختلف فن تعمیرات کے لیے بلڈ کو تقسیم کرنا اور مانگ پر ترسیل کی ٹیکنالوجیز کا استعمال شامل ہے۔
ایپلیکیشن کا سائز مختلف صارف طبقات کو غیر مساوی طور پر متاثر کرتا ہے۔ ترقی یافتہ موبائل انفراسٹرکچر والے علاقوں (امریکہ، یورپ، جاپان) میں 50 اور 100 MB کے درمیان فرق ناقابلِ توجہ ہو سکتا ہے۔ ترقی پذیر علاقوں (بھارت، انڈونیشیا، برازیل) میں ہر اضافی میگا بائٹ ڈیٹا پلان کی حدوں اور موبائل انٹرنیٹ کی رفتار کی وجہ سے انسٹالیشن کنورژن کو کم کرتا ہے۔ Google Play APK کے سائز کو 200 MB تک محدود کرتا ہے، لیکن اسے 100 MB سے نیچے رکھنے کی سفارش کرتا ہے۔
iOS App Store کے لیے، سیلولر نیٹ ورک پر زیادہ سے زیادہ ڈاؤن لوڈ سائز 200 MB ہے (2023 سے پہلے 150 MB تھا)۔ اگر IPA اس حد سے تجاوز کرتا ہے تو صرف Wi-Fi کے ذریعے ایپ انسٹال کر سکتا ہے۔ Apple App Thinning کو بھی سپورٹ کرتا ہے، جس میں Slicing، Bitcode اور On-Demand Resources شامل ہیں — وہ ٹیکنالوجیز جو ڈیولپر کی مداخلت کے بغیر کسی مخصوص ڈیوائس پر انسٹالیشن کا سائز خودکار طور پر کم کرتی ہیں۔
ایپ کا سائز نہ صرف انسٹالیشن کنورژن کو متاثر کرتا ہے، بلکہ ریٹینشن، اپ ڈیٹ کی تعدد اور پہلی لانچ کی رفتار کو بھی متاثر کرتا ہے۔ ہر اضافی میگا بائٹ صارف اور آپ کی مصنوعات کے استعمال کے درمیان ایک رکاوٹ ہے۔
Google I/O 2024 کے اعداد و شمار کے مطابق، APK کو 10 MB کم کرنے سے انسٹالیشن کنورژن اوسطاً 3.5% بڑھ جاتا ہے۔ 150+ MB سائز والی ایپس کے لیے، کنورژن 50 MB والی اسی کلاس کی ایپس کے مقابلے میں 20–30% کم ہو سکتا ہے۔ یہ اثر خاص طور پر Google Play پر نمایاں ہے، جہاں صارف انسٹالیشن سے پہلے سائز دیکھتا ہے۔ App Store میں، سائز ایپ کے صفحے پر دکھایا جاتا ہے، اور محدود ڈیٹا پلان والے صارف انسٹالیشن کو Wi-Fi تک مؤخر کر دیتے ہیں، جس کے بعد وہ اکثر ایپ کو بھول جاتے ہیں۔
بڑی ایپس OTA کے ذریعے کم کثرت سے اپ ڈیٹ ہوتی ہیں — صارف پیچ ڈاؤن لوڈ کرنا Wi-Fi تک مؤخر کر دیتے ہیں، اہم سیکورٹی اصلاحات سے محروم ہو جاتے ہیں۔ Google Play Incremental Updates (10 MB تک کے پیچ) کی اجازت دیتا ہے، لیکن مکمل دوبارہ انسٹالیشن اب بھی پورا APK یا AAB ڈاؤن لوڈ کرتی ہے۔ Apple App Store Delta Updates استعمال کرتا ہے، صرف تبدیل شدہ فائلیں منتقل کرتا ہے، لیکن وسائل تبدیل ہونے پر ڈیلٹا بھی اہم ہو سکتا ہے۔
سائز براہ راست پہلی لانچ کے وقت کو متاثر کرتا ہے: ایپ کو وسائل کو ان پیک کرنا، کوڈ مرتب کرنا (Android) یا کیشے پر دستخط کرنا (iOS) ہوتا ہے۔ 200 MB کی ایپ اوسط ڈیوائس پر 50 MB کی ایپ کے مقابلے میں 10–15 سیکنڈ آہستہ لانچ ہو سکتی ہے۔ اس سے آن بورڈنگ کا تجربہ خراب ہوتا ہے — صارف لوڈ ہونے کا انتظار کیے بغیر ایپ بند کر سکتا ہے۔
| سائز | ڈاؤن لوڈ کا وقت (3G) | پہلی لانچ کا وقت |
|---|---|---|
| 30 MB | ~20 سیکنڈ | 3–5 سیکنڈ |
| 100 MB | ~70 سیکنڈ | 5–8 سیکنڈ |
| 200 MB | ~140 سیکنڈ | 10–15 سیکنڈ |
وسائل — تصاویر، فونٹس، آوازیں، ویڈیوز — ایک عام موبائل ایپ کے سائز کا 60–80% بنتے ہیں۔ وسائل کی اصلاح کم سے کم کوشش کے ساتھ سب سے بڑا فائدہ دیتی ہے۔ اہم سمتیں ہیں: دبانا، ڈپلیکیٹس اور غیر استعمال شدہ اثاثے ہٹانا، صحیح فارمیٹس کا انتخاب۔
WebP — Google کی ایک تصویری فارمیٹ جو ایک ہی بصری معیار پر PNG سے 25–35% بہتر اور JPEG سے 15–20% بہتر دبانے کی سہولت فراہم کرتی ہے۔ Android API 18 سے WebP کو مقامی طور پر سپورٹ کرتا ہے۔ iOS کے لیے، WebP SDWebImage یا Kingfisher لائبریریوں کے ذریعے سپورٹ کیا جاتا ہے، اور iOS 17 سے مقامی سپورٹ آیا۔ AVIF — ایک زیادہ جدید فارمیٹ جو WebP کے مقابلے میں اضافی 10–15% بچت دیتی ہے، لیکن سست ڈی کوڈنگ کے ساتھ۔
غیر استعمال شدہ وسائل کو ہٹانا — سائز کم کرنے کا سب سے آسان طریقہ۔ Android میں، Android Studio کے ساتھ ری فیکٹرنگ استعمال کریں: Analyze → Run Inspection → Unused Resources۔ iOS میں — Build Settings → Remove Unused Resources۔ اکثر پروجیکٹس میں پچھلے ورژن کے اسپرائٹس، پرانے آئیکنز، غیر استعمال شدہ لانچ اسکرین تصاویر رہ جاتی ہیں جو بغیر کسی فعالی بوجھ کے سائز کو بڑھا دیتی ہیں۔
| فارمیٹ | PNG کے مقابلے میں دبانا | سپورٹ |
|---|---|---|
| PNG | — | تمام پلیٹ فارم |
| WebP | 25–35% | Android مقامی، iOS لائبریریوں کے ذریعے |
| AVIF | 35–45% | Android 12+، iOS 17+ |
| JPEG XR | 30–40% | صرف Windows |
کسٹم فونٹس 5–15 MB تک لے سکتے ہیں، خاص طور پر اگر پوری ٹائپ فیس شامل ہو (تمام اسٹائل: Regular, Bold, Italic, BoldItalic)۔ سب سیٹنگ — ایپ کے ذریعے سپورٹ نہ کی جانے والی زبانوں کے گلائف ہٹانا — کے ذریعے صرف ضروری اسٹائل اور کریکٹر سب سیٹ استعمال کریں۔ Google Fonts اور Transfonter جیسی خدمات کم سے کم کریکٹر سیٹ بنانے کی اجازت دیتی ہیں۔ آڈیو کے لیے، WAV اور غیر دبائے گئے فارمیٹس کے بجائے AAC/HE-AAC استعمال کریں — معیار کی کمی کے بغیر 90% تک بچت۔
کوڈ ایپ کے سائز کا 20–40% بنتا ہے، لیکن اس کی اصلاح وسائل سے زیادہ پیچیدہ ہے کیونکہ اس میں فعالیت کو توڑنے کے خطرے کے بغیر انحصار کا تجزیہ، مبہم کرنا اور مردہ کوڈ ہٹانا شامل ہے۔
ProGuard Android کے لیے ایک ٹول ہے جو کوڈ کو مبہم، چھوٹا اور بہتر بناتا ہے۔ R8 — اس کا جانشین، Android Gradle Plugin میں شامل، تیز اور زیادہ موثر طریقے سے کام کرتا ہے۔ R8 غیر استعمال شدہ کلاسز اور طریقوں کو ہٹاتا ہے، متغیر کے نام چھوٹے کرتا ہے اور ہدایات کی تعداد کم کرنے کے لیے کوڈ دوبارہ لکھتا ہے۔ R8 کے ساتھ DEX فائل کے سائز میں عام کمی 30–50% ہے۔
// build.gradle — چھوٹا کرنے کے لیے R8 کنفیگریشن
android {
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile(
'proguard-android-optimize.txt')
shrinkResources true
}
}
}
لائبریریاں — پھولے ہوئے سائز کی ایک عام وجہ۔ ایک لائبریری عبوری انحصار کھینچ سکتی ہے جو ایپ کو براہ راست فائدہ پہنچائے بغیر سائز 5–20 MB بڑھا دیتی ہے۔ واضح انحصار اعلامیہ کے ساتھ Android کے لیے Gradle Version Catalog اور iOS کے لیے Swift Package Manager استعمال کریں۔ Android Studio میں Build Analyzer یا Xcode Build Timeline سے سائز کا تجزیہ کریں۔ بھاری لائبریریوں کو ہلکے متبادل سے بدلیں: مثال کے طور پر، Apache HTTP (15 MB) کے بجائے OkHttp (3 MB)۔
Dead Code Stripping — Xcode میں لنکنگ مرحلے پر غیر استعمال شدہ طریقوں اور کلاسز کا خودکار اخراج۔ Build Settings → Dead Code Stripping = YES کے ذریعے فعال کیا جاتا ہے۔ Bitcode — ایک درمیانی نمائندگی جسے Apple مختلف فن تعمیرات کے لیے دوبارہ مرتب کر سکتا ہے، غیر استعمال شدہ فنکشن ہٹاتا ہے۔ تاہم، Xcode 14 سے Bitcode اختیاری ہو گیا ہے، اور سائز کم کرنے میں اس کا حصہ Objective-C پروجیکٹس کے لیے 5–15% اور Swift کے لیے کم ہے۔
App Thinning — Apple کی ٹیکنالوجی جو صرف ایک مخصوص ڈیوائس کے لیے ضروری وسائل فراہم کرکے انسٹال شدہ ایپ کے سائز کو خودکار طور پر کم کرتی ہے۔ یہ تین اجزاء پر مشتمل ہے: Slicing، On-Demand Resources اور Bitcode۔ Android میں، مساوی Dynamic Delivery کے ساتھ Android App Bundle (AAB) ہے۔
AAB — Google Play پر ایک اشاعتی فارمیٹ جہاں اسٹور ہر ڈیوائس کے لیے الگ سے APK تیار کرتا ہے، صرف اس کے فن تعمیر (armeabi-v7a, arm64-v8a)، اسکرین کثافت (mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi) اور زبانوں کے وسائل شامل کرتا ہے۔ یونیورسل APK سے AAB پر سوئچ کرتے وقت انسٹالیشن سائز میں عام کمی 20–40% ہے۔ Play Feature Delivery مانگ پر ماڈیول لوڈ کرنے کی اجازت دیتا ہے، جبکہ Install-time ماڈیول بیس انسٹالیشن میں شامل ہوتے ہیں۔
// build.gradle — AAB اور Dynamic Features کنفیگریشن
android {
bundle {
language {
enableSplit = true
}
density {
enableSplit = true
}
abi {
enableSplit = true
}
}
}
On-Demand Resources (ODR) — ایک iOS میکانزم جہاں وسائل (گیم لیول، ہائی ریزولوشن تصاویر، ویڈیوز) Apple کے سرورز سے صرف اس وقت ڈاؤن لوڈ ہوتے ہیں جب صارف کو واقعی ان کی ضرورت ہوتی ہے۔ ابتدائی انسٹالیشن کا سائز 50–80% تک کم کیا جا سکتا ہے۔ وسائل تین زمروں میں تقسیم ہیں: Initial Install Tags (انسٹالیشن کے دوران ڈاؤن لوڈ)، Prefetched Tag Order (انسٹالیشن کے بعد پس منظر میں ڈاؤن لوڈ)، اور On-Demand (صرف درخواست پر ڈاؤن لوڈ)۔ Apple ODR کے استعمال کی سفارش کرتا ہے مواد کے لیے جو پہلی اسکرین پر ضروری نہیں: گیم لیول، اضافی مواد، ویڈیو ٹیوٹوریلز۔
SwiftUI Bundle.module وصف کے ذریعے ODR کو سپورٹ کرتا ہے، جبکہ UIKit NSBundleResourceRequest استعمال کرتا ہے۔ Unity اور Unreal Engine پر گیمز کے لیے، ODR مقامی ریپر سطح پر مربوط ہوتا ہے۔ اہم حد یہ ہے کہ ODR وسائل سسٹم کے ذریعے جگہ کم ہونے پر حذف کر دیے جاتے ہیں، لہذا اہم ڈیٹا کو مین بلڈ میں شامل کیا جانا چاہیے۔
اکثر پوچھے گئے سوالات
50 MB سے کم — زیادہ سے زیادہ انسٹالیشن کنورژن کے لیے مثالی سائز۔ 50–100 MB — زیادہ تر ایپلیکیشنز کے لیے قابل قبول۔ 100 MB سے زیادہ — سائز کے لحاظ سے جواز کی ضرورت ہے (گیمز، آف لائن نقشے، مواد کے ایڈیٹرز)۔
وسائل کم وقت میں زیادہ فائدہ دیتے ہیں۔ غیر استعمال شدہ اثاثے ہٹا کر، PNG کو WebP میں تبدیل کرکے اور آڈیو دبا کر شروع کریں۔ پھر R8 یا Dead Code Stripping کے ذریعے کوڈ کی اصلاح پر جائیں۔
Google Play صرف مخصوص ڈیوائس کے لیے APK تیار کرتا ہے: arm64-v8a کوڈ، xhdpi وسائل، مطلوبہ زبان۔ ایک یونیورسل APK میں تمام متغیرات ایک ساتھ ہوتے ہیں، جس سے سائز 1.5–2 گنا بڑھ جاتا ہے۔ AAB اس مسئلے کو اسٹور کی سطح پر حل کرتا ہے۔
بالواسطہ طور پر۔ بڑے سائز کا مطلب JIT/AOT مرتب کرنے کے لیے زیادہ کوڈ، میموری میں لوڈ کرنے کے لیے زیادہ وسائل اور مینی فیسٹ کو پارس کرنے میں زیادہ وقت ہے۔ تاہم، رن ٹائم کارکردگی پر براہ راست اثر کم سے کم ہے — سائز انسٹالیشن اور پہلی لانچ کو متاثر کرتا ہے۔
Install-time — بیس انسٹالیشن کا حصہ، فوری دستیاب۔ On-Demand — پہلی رسائی پر لوڈ ہوتا ہے، ابتدائی انسٹالیشن میں شامل نہیں۔ On-Demand ان خصوصیات کے لیے استعمال کریں جن کی 20% سے کم صارفین کو ضرورت ہے: تشخیص، ٹیوٹوریلز، AR فلٹرز۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں