1

У нас есть SDK для Android, для которого требуется библиотека поддержки v4 с targetSdk 23 (это значит, что в библиотеке поддержки также должно быть 23). По коммерческим причинам я должен обновить SDK, чтобы он работал, даже если приложение составлено по API 21.Как проверить библиотеку поддержки/версию библиотеки AppCompat во время выполнения?

Это означает, что некоторые вызовы в библиотеку поддержки должны выполняться условно в зависимости от текущей версии библиотеки поддержки App (не текущий уровень API), поэтому у меня есть 3 варианта (0):

1 - Проверьте версию библиотеки поддержки перед вызовом метода (это то, что я не понял, как (если возможно вообще)).
2 - Используйте отражение.
3 - Используйте блоки Try Catch.

Итак, для 1-го варианта можно ли проверить версию библиотеки поддержки во время выполнения?

+0

Библиотека поддержки не предоставляет API для получения информации о версии и, вообще говоря, не предназначена для поддержки того, что вы пытаетесь выполнить. Также нет причин, по которым вам понадобится использовать v23 библиотеки поддержки, если вы используете targetSdk 23. – alanv

+0

@alanv Этот код предназначен для SDK не для приложения, которое немного изменяет правила. Подумайте, что этот код должен запускаться, если у вас есть версия 21 или версия 23. AppCompatV4. Есть некоторые методы, которые недоступны в редакции 21, поскольку были введены в ревизии 23, поэтому мне нужно быть уверенным, в какой версии код работает, чтобы избежать сбои. – tomacco

ответ

1

Я ответил на мой вопрос, с подходом, я, наконец, выбрал:

Это не представляется возможным проверить библиотечные поправки Поддержка Библиотека/AppCompat во время выполнения.
Обычно вы уже знаете, какую версию библиотеки библиотеки поддержки/версии AppCompat вы собираетесь использовать, поскольку она явно заявлена ​​в зависимостях приложений. Однако из-за того, что в этом случае код SDK должен работать при любых условиях (или, по крайней мере, в минной версии библиотек), для решения проблемы были выполнены некоторые разные вещи:

1 - Проверить доступность метода используя Java Reflection.
2 - Вызвать методы, используя также отражение, и try-catch блоков (для обеспечения стабильности приложения)
3 - Определите версию AppCompat, используя информацию, предоставленную блоком catch.
4 - Последующие вызовы не используют отражение, поскольку существование методов уже проверено, а версия min уже найдена.

 Смежные вопросы

  • Нет связанных вопросов^_^