کاهش هزینه داده برای میلیاردها نفر

طرح‌های داده در برخی کشورها می‌تواند بیش‌از ۱۰٪ درآمد ماهانه یک کاربر معمولی هزینه داشته باشد. این یعنی به‌حداقل رساندن اندازه بارگیری برنامه و اجازه دادن به کاربر برای کنترل نحوه استفاده برنامه از داده‌ها می‌تواند مزیت بزرگ و ملموسی برای بسیاری از کاربران داشته باشد. به‌حداقل رساندن اندازه بارگیری به حفظ فضا در حافظه داخلی نیز کمک می‌کند، که در برخی دستگاه‌ها منبعی کمیاب است.

در اینجا می‌توانید چند استراتژی برای کمک به بهینه‌سازی مقدار داده‌ای که برنامه‌تان استفاده می‌کند، هم ازطریق شبکه و هم در فضای ذخیره‌سازی داخلی، پیدا کنید.

کاهش اندازه برنامه

کاهش اندازه برنامه یکی از روش‌های اساسی است که می‌توانید به کاربرتان کمک کنید داده کمتری مصرف کند، هم ازنظر داده شبکه و هم ازنظر فضای ذخیره‌سازی داخلی. این بخش چندین رویکرد را برای کاهش اندازه برنامه شرح می‌دهد.

کاهش اندازه دارایی گرافیکی APK

  • دارایی‌های گرافیکی اغلب بیشترین سهم را در اندازه APK دارند. بهینه‌سازی این موارد می‌تواند منجر به بارگیری‌های کوچک‌تر و درنتیجه زمان نصب سریع‌تر برای کاربران شود.
  • برای دارایی‌های گرافیکی مانند نمادها، از قالب «نگاره‌سازی برداری مقیاس‌پذیر» (SVG) استفاده کنید. تصاویر SVG در مقایسه با گرافیک‌های بیت‌مپ اندازه بسیار کوچکی دارند و می‌توانند در زمان اجرا با هر وضوحی پرداز شوند. کتابخانه پشتیبانی Android پیاده‌سازی سازگار با نسخه قدیمی را برای منابع برداری در Android 2.1 (سطح API‏ ۷) ارائه می‌دهد. با این پست Medium کار با بردارها را شروع کنید.
  • برای تصاویر غیربرداری، مانند عکس‌ها، از WebP استفاده کنید تا زمان بار کردن تصویر را کاهش دهید و در پهنای باند شبکه صرفه‌جویی کنید. ثابت شده است که WebP در مقایسه با PNG و JPG، اندازه فایل کوچک‌تری دارد و کیفیت تصویر آن حداقل با آن‌ها برابر است. حتی در تنظیمات پراتلاف، WebP می‌تواند تصویری تقریباً یکسان با تصویر اصلی تولید کند. Android از Android 4.0 (سطح ای‌پی‌آی ۱۴: Ice Cream Sandwich) از WebP پراتلاف و از Android 4.2 (سطح ای‌پی‌آی ۱۷: Jelly Bean) از WebP بی‌اتلاف و شفاف پشتیبانی می‌کند.
  • اگر تصاویر بزرگ زیادی در تراکم‌های مختلف دارید، استفاده از پشتیبانی چند APK را برای تقسیم APK براساس تراکم درنظر بگیرید. این امر منجر به ساخت‌هایی می‌شود که برای تراکم‌های خاصی هدف‌یابی شده‌اند، یعنی کاربران دارای دستگاه‌های با تراکم پایین مجبور نخواهند بود جریمه بارگیری دارایی‌های با تراکم بالا را که استفاده نمی‌شوند متحمل شوند.
  • برای اطلاعات بیشتر درباره کاهش اندازه APK، به کاهش اندازه APK و کوچک کردن کد و منابع مراجعه کنید. علاوه‌براین، می‌توانید راهنمای مفصلی درباره کاهش اندازه APK در این مجموعه پست‌های Medium پیدا کنید.

کاهش اندازه کد

  • هر کتابخانه در پروژه Android شما کدی را به APK اضافه می‌کند که احتمالاً استفاده نمی‌شود. به‌ویژه هنگام استفاده از کتابخانه‌های خارجی مراقب باشید زیرا همه کتابخانه‌ها برای استفاده در برنامه‌های تلفن همراه طراحی نشده‌اند. مطمئن شوید کتابخانه‌هایی که برنامه‌تان استفاده می‌کند برای استفاده در تلفن همراه بهینه‌سازی شده‌اند.
  • بهینه‌سازی کد کامپایل‌شده بااستفاده از ابزاری مانند ProGuard را درنظر بگیرید. ProGuard کدی را که استفاده نمی‌شود شناسایی می‌کند و آن را از APK شما برمی‌دارد. همچنین، با تنظیم minifyEnabled=true، shrinkResources=true در build.gradle، کاهش منابع را در زمان ساخت فعال کنید—این کار به‌طور خودکار منابع استفاده‌نشده را از APK شما برمی‌دارد.
  • هنگام استفاده از خدمات Google Play، باید به‌طور انتخابی فقط میاناهای برنامه‌سازی کاربردی لازم را در APK خود بگنجانید.
  • برای اطلاعات بیشتر درباره کاهش اندازه کد در APK، به آموزش Android درباره نحوه اجتناب از چارچوب‌های تزریق وابستگی مراجعه کنید.

اجازه دادن به برنامه برای انتقال به فضای ذخیره‌سازی خارجی (SD)

  • دستگاه‌های ارزان‌قیمت معمولاً فضای ذخیره‌سازی کمی در دستگاه دارند. کاربران می‌توانند این فضا را با کارت SD افزایش دهند؛ بااین‌حال، برنامه‌ها باید صریحاً اعلام کنند که از نصب شدن در فضای ذخیره‌سازی خارجی پشتیبانی می‌کنند تا کاربران بتوانند آن‌ها را منتقل کنند.
  • بااستفاده از پرچم android:installLocation در AndroidManifest.xml، به برنامه‌تان اجازه دهید در فضای ذخیره‌سازی خارجی نصب شود. برای کسب اطلاعات بیشتر درباره فعال کردن برنامه‌تان برای انتقال به فضای ذخیره‌سازی خارجی، راهنمای Android درباره مکان نصب برنامه را ببینید.

کاهش استفاده از دیسک برنامه پس‌از نصب

  • پایین نگه داشتن میزان استفاده برنامه‌تان از دیسک به این معنی است که وقتی فضای خالی دستگاه کم است، احتمال حذف نصب برنامه‌تان توسط کاربران کمتر است. مهم است که برای حافظه‌های پنهان خود حدودی اعمال کنید—این کار از رشد نامحدود استفاده از دیسک برنامه‌تان جلوگیری می‌کند. مطمئن شوید داده‌های ذخیره‌شده در حافظه نهان را در getCacheDir() قرار می‌دهید—سیستم می‌تواند فایل‌های قرارگرفته در اینجا را درصورت نیاز حذف کند، بنابراین این فایل‌ها به‌عنوان فضای ذخیره‌سازی اختصاص‌یافته به برنامه نشان داده نخواهند شد.

ارائه استفاده از شبکه قابل‌پیکربندی

پلاتفرم Android شامل روش‌های متعددی است که می‌توانید به کاربر کنترل بدهید بر استفاده برنامه‌تان از شبکه، و آن را برای نیازهای خودشان بهینه‌سازی کنید. برای مثال، در اولین استفاده، برنامه‌تان می‌تواند کاربر را در انواع تنظیمات مربوط به شبکه راهنمایی کند. همچنین می‌توانید صفحه اولویت‌های شبکه را از خارج برنامه ارائه دهید.

ارائه تجربه‌های آماده‌سازی برای انتخاب‌های شبکه کاربران

  • برنامه‌هایی که به کاربران اجازه می‌دهند مصرف داده را کاهش دهند، حتی اگر نیازهای داده‌ای سنگینی داشته باشند، با استقبال خوبی مواجه می‌شوند. اگر برنامه‌تان از مقدار قابل‌توجهی پهنای باند استفاده می‌کند (برای مثال، برنامه‌های جاری‌سازی ویدیو)، می‌توانید تجربه آماده‌سازی برای کاربران ارائه دهید تا استفاده از شبکه را پیکربندی کنند. برای مثال، می‌توانید به کاربر اجازه دهید تا در شبکه‌های تلفن همراه، جاری‌سازی‌های ویدیو با نرخ بیت پایین‌تر را اجباری کند.
  • تنظیمات اضافی برای کاربران برای کنترل همگام‌سازی داده‌ها، واکشی اولیه، و رفتار استفاده از شبکه (برای مثال، واکشی اولیه همه دسته‌های خبری ستاره‌دار فقط در Wi-Fi)، همچنین به کاربران کمک می‌کند رفتار برنامه شما را با نیازهایشان تطبیق دهند.
  • برای اطلاعات بیشتر درباره مدیریت مصرف شبکه، آموزش Android درباره مدیریت مصرف شبکه را ببینید.

ارائه صفحه اولویت‌های شبکه

  • می‌توانید ازطریق صفحه اولویت‌های شبکه، از خارج از برنامه به تنظیمات شبکه برنامه پیمایش کنید. می‌توانید این صفحه را از صفحه تنظیمات سیستم یا صفحه مصرف داده سیستم فراخوانی کنید.
  • برای ارائه صفحه اولویت‌های شبکه که کاربران بتوانند از داخل برنامه شما و همچنین از تنظیمات سیستم به آن دسترسی داشته باشند، در برنامه خود فعالیتی را اضافه کنید که از کنش ACTION_MANAGE_NETWORK_USAGE پشتیبانی کند.
  • برای اطلاعات بیشتر درباره افزودن صفحه اولویت‌های شبکه، به آموزش Android درباره پیاده‌سازی فعالیت اولویت‌ها مراجعه کنید.

منابع بیشتر

برای کسب اطلاعات بیشتر درباره این موضوع، منابع تکمیلی زیر را مشاهده کنید:

پست‌های وبلاگ