Для привлечения новых пользователей необходимо поддерживать все большее разнообразие версий платформы Android и характеристик устройств. Для улучшения пользовательского опыта следует оптимизировать систему под распространенные конфигурации оперативной памяти, а также размеры и разрешения экрана.
Поддержка различных размеров экрана
Ваше приложение сможет обеспечить лучший пользовательский опыт для миллиардов пользователей, если будет поддерживать экраны различных размеров и разрешений. В этом разделе описаны несколько способов, как это можно сделать.
Используйте пиксели, не зависящие от плотности (dp).
- Определение размеров макета в пикселях неэффективно, поскольку разные экраны имеют разную плотность пикселей, поэтому одинаковое количество пикселей может соответствовать разным физическим размерам на разных устройствах.
- Для решения этой проблемы Android поддерживает пиксели, не зависящие от плотности (dp), что соответствует физическому размеру пикселя в 160 точек на дюйм (плотность mdpi).
- Определение макетов с помощью `dp` гарантирует, что физический размер пользовательского интерфейса будет одинаковым независимо от устройства. Для получения рекомендаций по использованию пикселей, не зависящих от плотности, посетите руководство Android по поддержке нескольких экранов .
Тестирование текста и графики на экранах с низкой и средней плотностью пикселей.
- Проверьте, хорошо ли отображается текст и графика на экранах с низкой и средней плотностью пикселей (ldpi и mdpi), поскольку это распространенные плотности , особенно в недорогих устройствах. Обратите внимание на текст, который может быть нечетким на экранах с низкой плотностью пикселей, где мелкие детали не видны.
- Устройства с экранами меньшей плотности, как правило, имеют более низкие аппаратные характеристики. Чтобы ваше приложение хорошо работало на таких устройствах, рассмотрите возможность уменьшения или исключения ресурсоемких графических нагрузок, таких как анимация и переходы.
- Для получения дополнительной информации о поддержке различных плотностей экрана см. раздел «Поддержка различных плотностей экрана» в обучающем курсе Android.
Тестовые макеты на экранах малого и среднего размера
- Убедитесь, что ваши макеты масштабируются до меньшего размера, протестировав их на экранах меньшего размера. По мере уменьшения размеров экрана будьте очень избирательны в отношении видимых элементов пользовательского интерфейса, поскольку для них остается ограниченное пространство.
- В рекомендациях Material Design описаны метрики и ключевые линии , обеспечивающие масштабируемость макетов в зависимости от плотности пикселей экрана.
- Для получения дополнительной информации о поддержке различных размеров экрана см. раздел «Поддержка различных размеров экрана» в обучающем материале по Android.
Обеспечить обратную совместимость
Не все ваши пользователи могут использовать устройства на базе последней и самой современной версии платформы Android. Вот несколько способов улучшить обратную совместимость, чтобы ваше приложение стало доступно как можно большему числу людей.
Установите соответствующие значения для targetSdkVersion и minSdkVersion
- Приложениям следует создавать и ориентироваться на самую последнюю версию Android, чтобы обеспечить актуальность их работы на широком спектре устройств; при этом сохраняется обратная совместимость со старыми версиями. Вот лучшие практики для правильного выбора уровней API:
-
targetSdkVersionдолжен соответствовать последней версии Android. Выбор самой последней версии гарантирует, что ваше приложение будет использовать более новые функции среды выполнения при работе с более новыми версиями Android. Обязательно протестируйте ваше приложение на более новых версиях Android при обновлении параметраtargetSdkVersion, так как это может повлиять на его работу. - Параметр
minSdkVersionзадает минимальную поддерживаемую версию Android. УстановкаminSdkVersionтакже приводит к тому, что инструменты сборки Android сообщают о некорректном использовании новых API, которые могут быть недоступны в более старых версиях платформы. Таким образом, вы защищены от непреднамеренного нарушения обратной совместимости.
-
- Изучите панели управления Android , консоль разработчика Google Play для вашего приложения и отраслевые исследования на целевых рынках, чтобы определить, какие версии Android следует использовать, исходя из целевой аудитории.
Используйте библиотеки поддержки Android.
- Обеспечьте единообразие работы вашего приложения во всех версиях ОС, используя библиотеку поддержки Android . Эта библиотека предоставляет обратно совместимые версии API фреймворка Android, а также функции, доступные только через API библиотеки, такие как
AppCompatActivityи библиотека поддержки Material Design. - Среди наиболее важных моментов можно отметить следующее:
- Библиотека поддержки версий v4 и v7: множество API фреймворков для более старых версий Android, таких как
ViewPager,ActionBar,RecyclerViewиPalette. - Библиотека поддержки Material Design : API для добавления компонентов и шаблонов Material Design в ваши приложения.
- Библиотека поддержки Multidex : обеспечивает поддержку больших приложений, содержащих более 65 000 методов. Это может произойти, если ваше приложение использует множество библиотек.
- Библиотека поддержки версий v4 и v7: множество API фреймворков для более старых версий Android, таких как
- Для получения дополнительной информации о доступных библиотеках поддержки см. раздел « Возможности библиотек поддержки» на сайте для разработчиков Android.
Используйте сервисы Google Play
- Сервисы Google Play предоставляют лучшие возможности API Google независимо от версии платформы Android. Рассмотрите возможность использования функций сервисов Google Play, чтобы обеспечить максимально удобный интерфейс Google на устройствах Android.
- Сервисы Google Play также включают полезные API, такие как
GcmNetworkManager, который предоставляет большую часть APIJobSchedulerиз Android 5.0 для более старых версий Android. - Обновления сервисов Google Play распространяются автоматически через магазин Google Play, а новые версии клиентской библиотеки доставляются через менеджер SDK Android.
Эффективное использование памяти
Память — это незаметный, но важный элемент пользовательского опыта. Грамотное управление памятью может сделать ваше приложение более стабильным и производительным; в некоторых случаях её эффективное использование может быть единственным фактором, обеспечивающим работоспособность приложения. Вот несколько способов, как помочь вашему приложению разумно использовать память.
Снижение объема используемой памяти на недорогих устройствах.
- Динамически регулируйте объем используемой памяти для обеспечения совместимости с устройствами, имеющими различные конфигурации оперативной памяти.
- Такие методы, как
isLowRamDevice()иgetMemoryClass()помогают определить ограничения памяти во время выполнения. На основе этой информации можно уменьшить использование памяти. Например, можно использовать изображения с более низким разрешением на устройствах с малым объемом памяти. - Для получения дополнительной информации об управлении памятью вашего приложения см. обучающий материал по Android « Управление памятью вашего приложения» .
Избегайте длительных процессов.
- Длительно работающие процессы остаются в памяти и могут замедлять работу устройства. В большинстве случаев ваше приложение должно активироваться при наступлении определенного события, обрабатывать данные и завершать работу. Для предотвращения длительной работы фоновых служб и снижения нагрузки на память устройства пользователя следует использовать Firebase Cloud Messaging (FCM) и
GcmNetworkManager
Использование памяти в ходе бенчмарка
Android Studio предоставляет инструменты для тестирования и профилирования памяти, позволяющие измерять использование памяти во время выполнения. Тестирование объема памяти, используемой вашим приложением, позволяет отслеживать использование памяти в разных версиях приложения. Это может помочь выявить непреднамеренный рост объема используемой памяти. Используйте инструмент «Профилировщик памяти» для выполнения следующих действий:
- Выясните, не являются ли нежелательные шаблоны событий сборки мусора (GC) причиной проблем с производительностью.
- Выявите типы объектов, которые неожиданно или без необходимости выделяются или остаются выделенными.
- Определите, в каком месте вашего кода может быть проблема.
Для получения дополнительной информации о тестировании использования памяти см. раздел «Просмотр кучи и выделений памяти с помощью Memory Profiler» .
Оптимизировано для устройств под управлением Android (Go edition)
Android (Go edition) — это оптимизированная версия для устройств начального уровня с объемом оперативной памяти ≤1 ГБ, начиная с Android Oreo (Go edition). Чтобы ваше приложение отлично работало на устройствах Android (Go edition), следует учитывать следующие рекомендации:
- targetSdkVersion должен соответствовать последней версии Android. Устройства Android (Go edition) работают только под управлением Android Oreo (API 27 или выше).
- Приложение должно бесперебойно работать на устройствах с объемом оперативной памяти не более 1 ГБ. Учитывайте оптимизации памяти, описанные в разделе «Эффективное использование памяти» выше, и используйте Android Vitals для выявления и устранения проблем, таких как медленная отрисовка и зависание кадров.
- Функция «картинка в картинке » (PIP) может быть отключена на устройствах. Прежде чем ваше приложение начнет использовать PIP, убедитесь, что она доступна, вызвав
hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE). - Размер приложения на устройстве не должен превышать 40 МБ.
- Пропорциональный размер набора (PSS) использования оперативной памяти приложением не должен превышать 90 МБ. Для игр PSS использования оперативной памяти игрой не должен превышать 150 МБ. Для получения дополнительной информации о PSS см. руководство «Исследование использования оперативной памяти» .
- Время запуска приложения должно быть минимальным и не превышать 5 секунд.
-
SYSTEM_ALERT_WINDOW(позволяющая приложениям отображать окно поверх других приложений) может быть отключена на устройствах Android Go с небольшим объемом оперативной памяти. Прежде чем отображать окно поверх других приложений, проверьте, есть ли у вашего приложения это разрешение, вызвав метод Settings.canDrawOverlays() . Если ваше приложение не может получить разрешение, плавно переведите его в режим пониженной производительности, чтобы пользователь мог продолжить его использование, возможно, отключив функцию, требующую разрешенияSYSTEM_ALERT_WINDOW.
Мы рекомендуем большинству разработчиков оптимизировать свои существующие приложения, которые будут доступны на всех устройствах Android (Go edition), поскольку ускорение и облегчение работы приложения принесет пользу всей вашей аудитории. Вы можете использовать функцию Multiple APK в Play Console для распространения определенного APK для устройств Android (Go edition), но делать это следует только без ущерба для пользовательского опыта (например, следует избегать удаления функций). APK, предназначенный для устройств Android (Go edition), должен содержать директиву <uses-feature android:name="android.hardware.ram.low" android:required="true"> , соответствовать как минимум уровню API 26 и иметь более высокий код версии, чем APK для устройств, не предназначенных для Go edition.
Связанный
Дополнительные ресурсы
Чтобы узнать больше о поддержке различных устройств, ознакомьтесь со следующим ресурсом: