قابلیت دستگاه برای میلیاردها نفر

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

پشتیبانی از اندازه‌های مختلف صفحه نمایش

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

استفاده از پیکسل‌های مستقل از چگالی (dp)

  • تعریف ابعاد طرح‌بندی با پیکسل به خوبی کار نمی‌کند زیرا صفحه نمایش‌های مختلف تراکم پیکسلی متفاوتی دارند، بنابراین تعداد پیکسل‌های یکسان ممکن است با اندازه‌های فیزیکی متفاوت در دستگاه‌های مختلف مطابقت داشته باشند.
  • برای غلبه بر این مشکل، اندروید از پیکسل مستقل از چگالی (dp) پشتیبانی می‌کند که مربوط به اندازه فیزیکی یک پیکسل با ۱۶۰ نقطه در اینچ (چگالی mdpi) است.
  • تعریف طرح‌بندی‌ها با dp تضمین می‌کند که اندازه فیزیکی رابط کاربری شما صرف نظر از دستگاه، ثابت باشد. برای بهترین شیوه‌ها در مورد استفاده از پیکسل‌های مستقل از تراکم، به راهنمای اندروید در مورد پشتیبانی از چندین صفحه نمایش مراجعه کنید.

متن و گرافیک را روی تراکم صفحه نمایش ldpi و mdpi آزمایش کنید

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

طرح‌بندی‌ها را روی اندازه‌های کوچک و متوسط ​​صفحه نمایش آزمایش کنید

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

ارائه سازگاری با نسخه‌های قبلی

ممکن است همه کاربران شما از دستگاه‌هایی که از آخرین و بهترین نسخه پلتفرم اندروید پشتیبانی می‌کنند، استفاده نکنند. در اینجا چند روش برای بهبود سازگاری با نسخه‌های قبلی و کمک به در دسترس قرار دادن برنامه شما برای بیشترین تعداد ممکن از افراد ارائه شده است.

targetSdkVersion و minSdkVersion خود را به طور مناسب تنظیم کنید

  • برنامه‌ها باید جدیدترین نسخه اندروید را بسازند و هدف قرار دهند تا اطمینان حاصل شود که جدیدترین رفتار را در طیف وسیعی از دستگاه‌ها ارائه می‌دهند؛ این امر همچنان سازگاری با نسخه‌های قدیمی‌تر را فراهم می‌کند. در اینجا بهترین شیوه‌ها برای هدف قرار دادن مناسب سطوح API آورده شده است:
    • targetSdkVersion باید آخرین نسخه اندروید باشد. هدف قرار دادن جدیدترین نسخه تضمین می‌کند که برنامه شما هنگام اجرای نسخه‌های جدیدتر اندروید، رفتارهای زمان اجرا جدیدتری را به ارث می‌برد. هنگام به‌روزرسانی targetSdkVersion ، حتماً برنامه خود را روی نسخه‌های جدیدتر اندروید آزمایش کنید زیرا می‌تواند بر رفتار برنامه تأثیر بگذارد.
    • minSdkVersion حداقل نسخه اندروید پشتیبانی‌شده را تنظیم می‌کند. تنظیم minSdkVersion همچنین منجر به گزارش استفاده نادرست از APIهای جدید می‌شود که ممکن است در نسخه‌های قدیمی‌تر پلتفرم در دسترس نباشند. با انجام این کار، از نقض ناخواسته سازگاری با نسخه‌های قبلی محافظت می‌شوید.
  • برای ارزیابی اینکه کدام نسخه‌های اندروید را بر اساس کاربران هدف خود هدف قرار دهید، به داشبوردهای اندروید ، کنسول توسعه‌دهندگان گوگل پلی برای برنامه خود و تحقیقات صنعتی در بازارهای هدف خود مراجعه کنید.

از کتابخانه‌های پشتیبانی اندروید استفاده کنید

  • با استفاده از کتابخانه پشتیبانی اندروید (Android Support Library) مطمئن شوید که برنامه شما تجربه‌ای سازگار با نسخه‌های مختلف سیستم‌عامل ارائه می‌دهد. این کتابخانه نسخه‌های سازگار با نسخه‌های قبلی APIهای چارچوب اندروید و همچنین ویژگی‌هایی را ارائه می‌دهد که فقط از طریق APIهای کتابخانه مانند AppCompatActivity و کتابخانه پشتیبانی طراحی متریال (Material Design Support Library) در دسترس هستند.
  • برخی از نکات برجسته عبارتند از:
    • کتابخانه پشتیبانی v4 و v7: بسیاری از APIهای چارچوب برای نسخه‌های قدیمی‌تر اندروید مانند ViewPager ، ActionBar ، RecyclerView و Palette .
    • کتابخانه پشتیبانی طراحی متریال : رابط‌های برنامه‌نویسی کاربردی (API) برای پشتیبانی از افزودن اجزا و الگوهای طراحی متریال به برنامه‌های شما.
    • کتابخانه پشتیبانی Multidex : از برنامه‌های بزرگی که بیش از ۶۵ هزار متد دارند پشتیبانی می‌کند. این اتفاق زمانی می‌افتد که برنامه شما از کتابخانه‌های زیادی استفاده می‌کند.
  • برای اطلاعات بیشتر در مورد کتابخانه‌های پشتیبانی موجود، به بخش ویژگی‌های کتابخانه‌های پشتیبانی در سایت توسعه‌دهندگان اندروید مراجعه کنید.

استفاده از سرویس‌های گوگل پلی

  • سرویس‌های گوگل پلی بهترین APIهای گوگل را مستقل از نسخه پلتفرم اندروید ارائه می‌دهند. برای ارائه ساده‌ترین تجربه گوگل در دستگاه‌های اندروید، استفاده از ویژگی‌های سرویس‌های گوگل پلی را در نظر بگیرید.
  • سرویس‌های گوگل پلی همچنین شامل APIهای مفیدی مانند GcmNetworkManager هستند که بخش زیادی از API JobScheduler اندروید ۵.۰ را برای نسخه‌های قدیمی‌تر اندروید فراهم می‌کند.
  • به‌روزرسانی‌های سرویس‌های گوگل پلی به‌طور خودکار توسط فروشگاه گوگل پلی توزیع می‌شوند و نسخه‌های جدید کتابخانه کلاینت از طریق مدیر SDK اندروید ارائه می‌شوند.

استفاده بهینه از حافظه

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

کاهش فضای اشغال شده توسط حافظه در دستگاه‌های ارزان قیمت

  • میزان حافظه خود را به صورت پویا تنظیم کنید تا از سازگاری بین دستگاه‌هایی با پیکربندی‌های مختلف رم اطمینان حاصل شود.
  • متدهایی مانند isLowRamDevice() و getMemoryClass() به تعیین محدودیت‌های حافظه در زمان اجرا کمک می‌کنند. بر اساس این اطلاعات، می‌توانید میزان استفاده از حافظه خود را کاهش دهید. به عنوان مثال، می‌توانید از تصاویر با وضوح پایین‌تر در دستگاه‌های با حافظه کم استفاده کنید.
  • برای اطلاعات بیشتر در مورد مدیریت حافظه برنامه خود، به آموزش اندروید در مورد مدیریت حافظه برنامه خود مراجعه کنید.

از فرآیندهای طولانی مدت خودداری کنید

  • فرآیندهای طولانی مدت در حافظه باقی می‌مانند و می‌توانند دستگاه را کند کنند. در بیشتر مواقع، برنامه شما باید برای یک رویداد خاص بیدار شود، داده‌ها را پردازش کند و خاموش شود. شما باید از Firebase Cloud Messaging (FCM) و GcmNetworkManager برای جلوگیری از اجرای طولانی مدت سرویس‌های پس‌زمینه و کاهش فشار حافظه بر دستگاه کاربر استفاده کنید.

معیار استفاده از حافظه

اندروید استودیو ابزارهای بنچمارک و پروفایلینگ حافظه را ارائه می‌دهد که به شما امکان می‌دهد میزان استفاده از حافظه را در زمان اجرا اندازه‌گیری کنید. بنچمارک کردن میزان اشغال فضای حافظه برنامه شما را قادر می‌سازد تا میزان استفاده از حافظه را در چندین نسخه از برنامه نظارت کنید. این می‌تواند به شناسایی رشد ناخواسته اشغال فضای حافظه کمک کند. از ابزار پروفایلینگ حافظه برای انجام موارد زیر استفاده کنید:

  • دریابید که آیا الگوهای نامطلوب رویداد جمع‌آوری زباله (GC) ممکن است باعث مشکلات عملکردی شوند یا خیر.
  • انواع اشیایی را که به طور غیرمنتظره یا غیرضروری تخصیص داده می‌شوند یا تخصیص می‌یابند، شناسایی کنید.
  • مشخص کنید که مشکل ممکن است در کدام قسمت کد شما باشد.

برای اطلاعات بیشتر در مورد معیار سنجش استفاده از حافظه، به بخش «مشاهده‌ی هیپ و تخصیص‌ها با استفاده از Memory Profiler» مراجعه کنید.

بهینه سازی برای دستگاه های دارای سیستم عامل اندروید (نسخه Go)

اندروید (نسخه Go) یک تجربه بهینه برای دستگاه‌های سطح پایین با رم کمتر یا مساوی ۱ گیگابایت است، که از اندروید Oreo (نسخه Go) شروع می‌شود. برای اطمینان از عملکرد عالی برنامه شما در دستگاه‌های اندروید (نسخه Go)، باید دستورالعمل‌های زیر را در نظر بگیرید:

  • targetSdkVersion باید آخرین نسخه اندروید باشد. دستگاه‌های اندروید (نسخه Go) فقط اندروید Oreo (API 27 یا بالاتر) را اجرا می‌کنند.
  • این برنامه باید روی دستگاه‌هایی با رم کمتر یا مساوی ۱ گیگابایت به راحتی اجرا شود. بهینه‌سازی‌های حافظه ذکر شده در بخش «استفاده کارآمد از حافظه» در بالا را در نظر داشته باشید و از نکات مهم اندروید برای شناسایی و رفع رفتارهای بد مانند رندر کند و فریم‌های هنگ کرده استفاده کنید.
  • ممکن است قابلیت تصویر در تصویر (PIP) در دستگاه‌ها غیرفعال باشد. قبل از اینکه برنامه شما از PIP استفاده کند، با فراخوانی hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE) مطمئن شوید که این قابلیت در دسترس است.
  • حجم برنامه روی دستگاه باید کمتر از ۴۰ مگابایت باشد.
  • اندازه مجموعه متناسب (PSS) استفاده از رم توسط برنامه نباید از ۹۰ مگابایت بیشتر شود. برای بازی‌ها، PSS استفاده از رم بازی نباید از ۱۵۰ مگابایت بیشتر شود. برای اطلاعات بیشتر در مورد PSS، به راهنمای بررسی میزان استفاده از رم مراجعه کنید.
  • زمان شروع به کار برنامه باید حداقل و زیر ۵ ثانیه باشد.
  • SYSTEM_ALERT_WINDOW (که به برنامه‌ها اجازه می‌دهد روی برنامه‌های دیگر پنجره‌ای رسم کنند) ممکن است در دستگاه‌های Android Go که رم کمی دارند غیرفعال باشد. قبل از رسم روی برنامه‌های دیگر، با فراخوانی Settings.canDrawOverlays() بررسی کنید که آیا برنامه شما این مجوز را دارد یا خیر. اگر برنامه شما نمی‌تواند این مجوز را دریافت کند، به آرامی برنامه خود را تنزل دهید تا کاربر بتواند به استفاده از برنامه شما ادامه دهد، احتمالاً با غیرفعال کردن ویژگی که به مجوز SYSTEM_ALERT_WINDOW نیاز دارد.

ما توصیه می‌کنیم که اکثر توسعه‌دهندگان، برنامه فعلی خود را که در همه دستگاه‌های اندروید (نسخه Go) در دسترس خواهد بود، بهینه‌سازی کنند، زیرا سریع‌تر و سبک‌تر کردن اجرای برنامه به نفع همه مخاطبان شما خواهد بود. می‌توانید از ویژگی Multiple APK در Play Console برای توزیع یک APK خاص برای دستگاه‌های اندروید (نسخه Go) استفاده کنید، اما این کار را باید فقط بدون به خطر انداختن تجربه انجام دهید (مثلاً باید از حذف ویژگی‌ها خودداری کنید). APK که دستگاه‌های اندروید (نسخه Go) را هدف قرار می‌دهد، باید <uses-feature android:name="android.hardware.ram.low" android:required="true"> را تعریف کند، حداقل API Level 26 را هدف قرار دهد و کد نسخه بالاتری نسبت به APK نسخه غیر Go داشته باشد.

منابع اضافی

برای کسب اطلاعات بیشتر در مورد پشتیبانی از دستگاه‌های مختلف، به منبع زیر مراجعه کنید:

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