کاهش حجم اپلیکیشنهای فلاتری

با گسترش روزافزون اپلیکیشنهای موبایل، کاربران به دنبال اپلیکیشنهایی با عملکرد سریع و حجم کم هستند. حجم بالای اپلیکیشن میتواند باعث کاهش تعداد نصب، افزایش نرخ حذف و حتی افت عملکرد شود. در این مقاله، روشهای کاهش حجم اپلیکیشنهای فلاتری را بررسی میکنیم. همچنین تفاوت حجم اپلیکیشنهای فلاتری و نیتیو و روشهای خروجی گرفتن برای اندروید و iOS را مرور خواهیم کرد.
فلاتر چیست؟
فلاتر (Flutter) یک فریمورک متنباز برای توسعه اپلیکیشنهای چندسکویی (cross-platform) است که توسط گوگل توسعه یافته است. این فریمورک امکان ساخت اپلیکیشنهای اندروید، iOS، وب و دسکتاپ را با یک کد واحد فراهم میکند.
ویژگیهای کلیدی فلاتر:
- استفاده از زبان Dart: فلاتر از زبان برنامهنویسی Dart برای توسعه استفاده میکند.
- رندرینگ سفارشی: از موتور گرافیکی Skia برای رندر سریع و دقیق استفاده میکند.
- Hot Reload: قابلیت مشاهده تغییرات کد بدون نیاز به ریاستارت اپلیکیشن.
- ویجتهای قابل شخصیسازی: برای ایجاد رابط کاربری مدرن و زیبا.
🔹 انواع خروجی اپلیکیشنهای فلاتر

فلاتر به دلیل قابلیت چندسکویی، خروجیهای مختلفی را تولید میکند:
- اندروید: خروجی بهصورت APK، AAB یا App Bundle.
- iOS: خروجی بهصورت IPA.
- وب: خروجی بهصورت فایلهای HTML، CSS و JS.
- دسکتاپ: خروجی برای سیستمعاملهای macOS، Windows و Linux.

🔹 حجم اپلیکیشنهای فلاتری در مقایسه با نیتیو
یکی از نقاط ضعف اپلیکیشنهای فلاتری، حجم بالای آنها نسبت به اپلیکیشنهای نیتیو است. علت این موضوع:
- وجود موتور رندر داخلی: اپلیکیشنهای فلاتری شامل موتور رندر Skia هستند که باعث افزایش حجم میشود.
- فایلهای کتابخانهی Dart: کتابخانههای پیشفرض Dart در داخل خروجی اپلیکیشن قرار میگیرند.
- عدم استفاده از APIهای سیستمی: برخلاف اپلیکیشنهای نیتیو، اپهای فلاتری مجبورند برخی از قابلیتهای سیستمی را شبیهسازی کنند که این امر حجم اپ را افزایش میدهد.
مقایسه حجم خروجی:
- اپلیکیشن نیتیو اندروید: 5 الی 10 مگابایت.
- اپلیکیشن فلاتری اندروید: 15 الی 25 مگابایت.
- اپلیکیشن نیتیو iOS: 10 الی 15 مگابایت.
- اپلیکیشن فلاتری iOS: 40 الی 60 مگابایت.
🔹 روش خروجی گرفتن اپلیکیشن اندروید
برای خروجی گرفتن اپ اندروید در فلاتر، میتوانید از دستورات زیر استفاده کنید:
- ساخت APK:
1 | flutter build apk --release |
- ساخت App Bundle:
1 | flutter build appbundle --release |
- بهینهسازی خروجی:
- برای کاهش حجم، از
--split-per-abi
برای ایجاد نسخههای اختصاصی برای معماریهای مختلف استفاده کنید:
1 | flutter build apk --release --split-per-abi |
این دستور خروجی را برای هر معماری CPU (مانند armeabi-v7a
, arm64-v8a
و x86_64
) جدا میکند و باعث کاهش حجم فایل APK نهایی میشود.
🔹 روش خروجی گرفتن اپلیکیشن iOS
برای خروجی گرفتن اپلیکیشن iOS در فلاتر:
- ساخت خروجی iOS:
1 | flutter build ios --release |
- آرشیو و انتشار در Xcode:
- پروژه را در Xcode باز کنید:
1 | open ios/Runner.xcworkspace |
از منوی Product > Archive خروجی گرفته و برای انتشار آماده کنید.
🔹 روشهای کاهش حجم اپلیکیشن فلاتری
✅ 1. استفاده از Split APKs یا App Bundles در اندروید میتوانید خروجی App Bundle بگیرید که گوگلپلی به صورت خودکار نسخه بهینه را برای دستگاه کاربر ارائه میدهد. این کار حجم دانلود را کاهش میدهد:
1 | flutter build appbundle --release |
همچنین با دستور زیر میتوانید برای هر معماری خروجی مجزا بگیرید:
1 | flutter build apk --release --split-per-abi |
✅ 2. فشردهسازی فایلهای تصویر
- از تصاویر WebP یا SVG به جای PNG و JPG استفاده کنید.
- فشردهسازی تصاویر با ابزارهایی مثل:
✅ 3. استفاده از ProGuard و R8 در اندروید ProGuard و R8 به شما کمک میکنند تا کلاسها و متدهای بلااستفاده را حذف کنید:
- فایل
android/app/proguard-rules.pro
را ویرایش کرده و موارد زیر را اضافه کنید:
1 2 | -keep class io.flutter.app.FlutterApplication -keep class io.flutter.plugin.** { *; } |
- فایل
android/app/build.gradle
را بهینه کنید:
1 2 3 4 5 6 7 | buildTypes { release { shrinkResources true minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } |
✅ 4. حذف فونتهای بلااستفاده اگر از فونتهای خارجی زیادی استفاده میکنید، موارد بلااستفاده را حذف کنید.
✅ 5. غیرفعال کردن فلگهای غیرضروری در فایل pubspec.yaml
، فلگهای debug
و profile
را غیرفعال کرده و فقط نسخه release
را خروجی بگیرید.
✅ 6. Lazy Loading و Deferred Components در صورت نیاز به کتابخانههای بزرگ، میتوانید از Deferred Components استفاده کنید تا آنها را هنگام اجرا و نه در هنگام نصب، دانلود کنید.
✅ 7. حذف Assets اضافی فایلهای بلااستفاده و اضافی در مسیر assets
را حذف کنید.
✅ 8. حذف کتابخانههای غیرضروری کتابخانههای بلااستفاده در pubspec.yaml
را حذف کنید.
✅ 9. فعال کردن “Tree Shaking” در اپهای وب، با فعالکردن Tree Shaking، کدهای بلااستفاده Dart حذف میشوند:
1 | flutter build web --release |
✅ 10. استفاده از پکیجهای بهینه برخی پکیجها مانند flutter_svg
و cached_network_image
بهینهتر از معادلهای رایج هستند.
🔹 سوالات متداول
✅ 1. آیا اپلیکیشنهای فلاتری همیشه حجم بالایی دارند؟
خیر، با بهینهسازیهای مناسب مانند Split APK، فشردهسازی تصاویر و حذف کتابخانههای غیرضروری، میتوانید حجم اپلیکیشن را کاهش دهید.
✅ 2. بهترین روش برای کاهش حجم اپ در iOS چیست؟
استفاده از ابزارهای فشردهسازی اپل مانند Bitcode و حذف منابع اضافی.
✅ 3. آیا استفاده از فلاتر برای اپهای سنگین مناسب است؟
بله، اما برای اپهای بسیار سنگین یا گرافیکی، استفاده از کد نیتیو (مانند Swift یا Kotlin) ممکن است بهینهتر باشد.
🔹 نتیجهگیری
کاهش حجم اپلیکیشنهای فلاتری به بهبود تجربه کاربری و افزایش نصبها منجر میشود. با بهینهسازی تصاویر، استفاده از Split APK یا App Bundle، حذف کتابخانههای غیرضروری و فعالسازی ProGuard یا R8 میتوانید حجم اپلیکیشن را به میزان قابل توجهی کاهش دهید. رعایت این اصول، علاوه بر بهبود عملکرد، مصرف حافظه و سرعت بارگذاری اپ را نیز افزایش میدهد.
دیدگاهتان را بنویسید