سایز اپلیکیشن برای بسیاری از برنامه نویسان موبایل مساله ای مهم به حساب می آید. از آن جا که فایل APK یا app bundle و یا IPA اپ فلاتری حاوی کدها و منابع مورد نیاز برای اجرای آن است (مثل تصاویر ایستایی که در اپ استفاده شده است)، سایز اپ اهمیت پیدا میکند. هر چه اپ بزرگتر باشد، فضای بیشتری روی دستگاه کاربر اشغال می کند، زمان بیشتری برای دانلود آن نیاز است و برای برخی امکانات مفید (مثل Android instant apps) محدودیت به حساب می آید.
توجه: اگر اپ را با دستور flutter run اجرا کنید یا دکمه پلی در IDE خود را کلیک کنید در حالت پیشفرض یک نسخه ی دیباگ تولید خواهد شد. دقت کنید که سایز نسخه دیباگ به خاطر سربارهایی که امکان hot reload و دیباگ کردن را فراهم می کنند، بزرگتر از سایز نهایی اپ خواهد بود و بنابراین نمایانگر خوبی برای اپ نهایی که کاربر دانلود خواهد کرد نیست.
نسخه بیلد نهایی (release build) مثل نسخه ای که با دستور flutter build apk یا flutter build ios تولید میکنید، برای بارگذاری پکیج در پلی استور یا اپ استور مناسب هستند. اما این نسخه ها هم سایز نهایی اپی که کاربر دانلود خواهد کرد را نشان نمی دهند. استورها عموما پکیجی که بارگذاری میکنید را مجددا پردازش کرده و آن را طوری میشکنند که برای دستگاهی که آن را دانلود میکند مناسب باشد.
پس برای تخمین سایز نهایی اپ چه روشی مناسب است؟ برای بدست آوردن نزدیک ترین تخمین از سایز اپ در هر پلتفرم از روشی که در ادامه می آید استفاده کنید:
تحلیل سایز اپ
با شروع از فلاتر نسخه 1.22 و DevTools نسخه 0.9.1، ابزار تحلیل سایز برای کمک به توسعه دهندگان جهت درک بخش های تشکیل دهنده نسخه release در دسترس قرار گرفت.
ابزار تحلیل سایز را می توانید با اضافه کردن فلگ analyze-size به انتهای دستور بیلد فراخوانی کنید:
flutter build apk --analyze-size --target-platform=android-arm64 flutter build appbundle --analyze-size --target-platform=android-arm64 flutter build ios --analyze-size flutter build linux --analyze-size flutter build macos --analyze-size flutter build windows --analyze-size
بیلدی که با این دستور بدست می آورید به دو دلیل از بیلد استاندارد متفاوت است:
1- این ابزار، دارت را به نحوی کامپایل می کند که سایز استفاده شده توسط پکیج های دارت را ثبت می کند
2- ابزار یک خلاصه از تقسیم سایز اپ در ترمینال نمایش می دهد و یک فایل *-code-size-analysis_*.json ایجاد می کند که برای تحلیل دقیق تر سایز اپ در DevTools به کار می رود.
در خلاصه وضعیت سایز اپ شما می توانید با یک نگاه از میزان حجم مصرفی به ازای هر دسته بندی (مثل asset، native code، Flutter library) مطلع شوید. برای کد دارت کامپایل شده سایز هر پکیج نیز مشخص شده است.
تحلیل عمیق تر به کمک DevTools
فایل json تولید شده در مرحله قبل را می توان به کمک DevTools بیشتر تحلیل کرد طوری که محتوای اپ تا رسیدن به سطح فایل شکسته می شود. برای این کار دستور flutter pub global run devtools را اجرا و Open app size tool را انتخاب کنید. سپس فایل json را آپلود کنید.
علاوه بر تحلیل یک بیلد، می توان دو بیلد را با بارگذاری فایل های json آنها در DevTools، مقایسه کرد.
کاهش سایز اپ
وقتی نسخه نهایی اپ خود را بیلد می کنید، از تگ زیر استفاده کنید. این تگ می تواند سایز اپ را به میزان قابل توجهی کاهش دهد.
--split-debug-info
رعایت موارد زیر نیز به کاهش سایز اپ کمک می کنند: