Android X обратная совместимость
У меня есть Android-приложение, которое использует библиотеки поддержки версий 27.1.2. Я хочу использовать библиотеку, написанную с использованием Android X (API 28).
Есть несколько проблем с интервалом имен версий библиотеки.
Пример...
В библиотеке есть диалог, который я хочу использовать с API
Dialog.show(androidx.fragment.app.FragmentActivity activity);
Однако все мои действия используют
android.support.v4.app.FragmentActivity
и компилятору это не нравится.
В настоящее время нет возможности обновить мой проект до последней версии, поэтому, пожалуйста, не отвечайте на обновления, если только это не единственное решение.
Есть ли способ решить эту проблему несовместимости?
Заранее спасибо.
1 ответ
Это невозможно. Чтобы использовать любую библиотеку, которая зависит от AndroidX, ваш проект должен перенести весь ваш проект на AndroidX.
Обратите внимание, что поддерживается обратное - вы можете использовать библиотеки, созданные с помощью библиотеки поддержки, в проектах, в которых используется AndroidX (это android.enableJetifier=true
флаг).
AndroidX [О программе]
- Потребитель
support
-> ПродюсерandroidX
- не совместим.
Вы должны перенести свой потребитель использовать AndroidX.Android Studio menu -> Refactor -> Migrate to AndroidX...
- Потребитель
androidX
-> Продюсерsupport
- совместимый.
Потребительский gradle.properties
в дополнение к использованию androidX
должен позволить Jetifier
[О], который конвертируетsupport
к androidX
android.useAndroidX=true
android.enableJetifier=true
Есть выход
Инструмент Jetifier переносит библиотеки, зависящие от поддерживаемой библиотеки, чтобы вместо этого полагаться на эквивалентные пакеты AndroidX. Но когда вы устанавливаете флаг -r, он делает прямо противоположный процесс.
Если вы передадите флаг -r, утилита будет работать в обратном режиме. В этом режиме утилита преобразует API AndroidX в эквиваленты библиотеки поддержки, а не наоборот. Обратный режим полезен, например, если вы разрабатываете библиотеки, использующие API AndroidX, но вам также необходимо распространять версии, использующие библиотеку поддержки.
В любом случае я предлагаю использовать его только в очень критических целях.