Как мне понизить минимальную версию SDK?

Я работаю над приложением для Android. Это почти закончено. Я только что заметил, что для minSdkVersion установлено значение 21. Может быть, я забыл об этом, когда создавал проект. Я бы хотел понизить его, потому что у пользователей приложения, скорее всего, будут старые устройства.

Я не думаю, что это хорошая идея изменить minSdkVersion на ~ 10, сидеть сложа руки и надеяться, что в будущем он будет нормально компилироваться и работать.

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

Можно ли автоматически перечислить конкретные методы Android API, используемые в моем проекте, и их уровень API? Или как-то определить самый высокий уровень API, который требуется используемому методу? Android Studio знает эти числа, она также может получить документацию. Или безопасно ли изменить minSdkVersion и targetSdkVersion на более низкий уровень API, чтобы узнать, какие методы не поддерживаются на более старом устройстве, и после того, как я исправлю все ошибки/предупреждения, которые мне покажет IDE, будет ли мое приложение работать нормально?


person klenium    schedule 15.11.2017    source источник


Ответы (1)


Android Studio выдаст вам предупреждения, когда вы используете методы, для которых требуется более высокая версия SDK, чем указанная вами minSdkVersion. Вы можете получить доступ ко всему списку этих предупреждений для всего проекта, используя функциональность Analyze -> Code Cleanup. Итак, что вы можете сделать:

  1. Опустите minSdkVersion.
  2. Нажмите «Анализ» -> «Очистка кода» в Android Studio. Выберите «Весь проект»
  3. The relevant errors are part of these sections:
    • Android Lint: Correctness -> Attribute unused on older versions
    • Android Lint: Корректность -> Вызов новых методов в старых версиях
    • Android Lint: правильность -> использование встроенных констант в более старых версиях
    • Android Lint: интернационализация -> проблемы с совместимостью текста справа налево

Пробуя разные номера версий, вы можете увидеть, сколько изменений необходимо. Чтобы выбрать правильный minSdkVersion, вы можете рассмотреть статистику устройств на уровне Android API.

Таким образом, стратегия выбора для targetSdkVersion или minSdkVersion обычно выглядит следующим образом: вы устанавливаете targetSdkVersion на самый высокий номер версии, с которой вы тестировали свое приложение. minSdkVersion должно быть установлено на более низкое значение — достаточно низкое, чтобы поддерживалось достаточное количество устройств, но достаточно высокое, чтобы не требовалось много обходных путей для конкретной версии. Подробнее об этих двух значениях см. в документации Android.

person guglhupf    schedule 15.11.2017
comment
Это не совсем безопасно. Хотя я спрашивал только о методах, в макете XML была проблема, которая тоже могла быть важной, но не была устранена с помощью очистки кода: i.stack.imgur.com/hBA2Z.png - person klenium; 16.11.2017
comment
Спасибо за подсказку, я обновил ответ соответственно. - person guglhupf; 27.11.2017