Несколько APK или один APK для разных уровней API?

У меня есть файл APK, который содержит мое приложение, работающее как минимум с API 21, чтобы я мог наилучшим образом поддерживать функции проектирования материалов. Поскольку Android Lollipop (API 21) работает только на 12,4% устройств, я, естественно, хочу также поддерживать более низкие API. Каков наилучший способ создания приложения с разными макетами для API v21 и менее v21? Стоит ли создавать два разных приложения, одно из которых оптимизировано для версии v21, а другое - для версии ниже v21, или есть более простой способ сделать это?

Спасибо!

3 ответа

Решение

Слушайте, вы можете создавать несколько приложений и использовать библиотеку поддержки Android.(Библиотека поддержки Android является одним из лучших ресурсов для достижения этой цели, заботясь о мелочах для вас). Это всегда ваш выбор.

Это общая проблема для многих приложений, которые имеют дизайн или другие оптимизации, предназначенные для более новых версий платформы (не только API 21+ ... но как насчет того, чтобы появился API 25?)

Есть несколько факторов, которые необходимо учесть, прежде чем принимать это решение - программирование и организация. Android имеет много функций для поддержки обратной совместимости в одном приложении. Папки ресурсов, статические методы для проверки API платформы, библиотеки совместимости. Некоторые организации отказываются от идеи поддержки нескольких приложений.

Вот список, который вам может понадобиться расставить по приоритетам для вашей собственной среды:

  1. Можете ли вы ограничить папки ресурсов, необходимые для поддержки нескольких API, приемлемым уровнем сложности? Управлять несколькими дополнительными макетами и / или папками с изображениями довольно просто. Но тесная зависимость от многих макетов для одного Activity или же Fragmentи затем поддерживая множество плотностей экрана наряду с размерами устройства... вам может быть лучше разделить их на разные приложения, чтобы уменьшить сложность.

  2. У вас есть несколько вложенных объектных зависимостей, которые требуют определения API устройства? Если у вас есть слой за слоем объектов, которые имеют разные требования API (Объект A предназначен для API 21+, Объект B предназначен только для API 19 и т. Д., А затем Объект AA предназначен для API 17+ и также зависит от Объекта A или Объект B, в зависимости от API) - вы можете быть вовлечены в разработку одного приложения. Или вы можете быть вынуждены создавать библиотеки и отдельные APK, чтобы вы могли правильно протестировать свой код.

  3. Понимает ли компания, что "один APK" не означает "дешевле, чем несколько APK"? Иногда разделение разработки на отдельные APK уменьшает сложность и увеличивает результаты разработки при снижении стоимости QA. В других случаях они будут проходить отдельные утверждения релизов и другие действия, связанные с "красной лентой", которые делают разделение неэффективным. Кроме того, иногда разработчики отдают предпочтение работе с "самой последней и самой лучшей" целью API, а качество отстает от API отстающих целей.

  4. Можете ли вы поддержать разработку библиотек или субмодулей, чтобы вы могли эффективно использовать код с несколькими APK? После того, как вы разделите APK, может возникнуть тенденция недостаточно хорошо разбираться в каждой кодовой базе для эффективного повторного использования компонентов. Проблема, которая существует в одном APK, может быть решена без распознавания, которое также решает аналогичную (но не точно такую ​​же) проблему в другом.

Вообще говоря, сохранение одной и той же кодовой базы добавляет сложности с преимуществом сохранения акцента на одном наборе кода и поддержания управления. Тем не менее, конкретные случаи (например, наличие приложения для уведомлений - где сама природа уведомлений изменилась в Lollipop) могут привести к необходимости создания нового APK с риском значительного снижения поддержки более старых версий, что может быть лучше при принятии более новые версии достигают насыщения.

Google позволяет загружать несколько APK, предназначенных для разных API (и даже устройств), для одного приложения. Это дополнительная гибкость и дополнительное обслуживание магазина приложений.

Удачи.

Вы не должны создавать несколько APK, так как это становится кошмаром обслуживания.

Используйте библиотеку поддержки Android и библиотеку дизайна Android, чтобы воспользоваться преимуществами новейших функций платформы, а также перенести обратно на более ранние уровни API.

Другие вопросы по тегам