Могу ли я использовать библиотеку, которая использовала поддержку Android в проектах Androidx.
Я знаю, андроид и поддержка зависят от ошибки multidex. Мы не можем одновременно использовать поддержку androidx и android. Поэтому я полностью перехожу к androidx. но одна из моих зависимостей lib использовала поддержку android lottie.
Что мы можем сделать в ситуации выше? Должен ли я удалить "lottie" из моего проекта.
ниже мой град
defaultConfig {
minSdkVersion 19
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
multiDexEnabled true
}
ext{
lottieVersion = "2.5.4"
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
def androidx = "1.0.0-rc01"
api "androidx.constraintlayout:constraintlayout:1.1.2"
api "androidx.appcompat:appcompat:$androidx"
api "androidx.recyclerview:recyclerview:$androidx"
api "androidx.cardview:cardview:$androidx"
api "androidx.core:core-ktx:$androidx"
api "com.google.android.material:material:1.0.0-rc01"
implementation "com.google.code.gson:gson:2.8.5"
implementation "androidx.multidex:multidex:2.0.0"
implementation "com.airbnb.android:lottie:$lottieVersion"
}
Ответы
Ответ 1
Вы можете включить Jetifier
в свой проект, который будет в основном обмениваться зависимостями Android Support Library
зависимостях вашего проекта от AndroidX
-ones. (например, ваши зависимости Lottie будут изменены от Support to AnroidX)
Из документации Android Studio (https://developer.android.com/studio/preview/features/):
Плагин Android Gradle предоставляет следующие глобальные флаги, которые вы можете установить в файле gradle.properties:
- android.useAndroidX: если установлено значение true, этот флаг указывает, что вы хотите начать использовать AndroidX с этого момента. Если флаг отсутствует, Android Studio ведет себя так, как если бы флаг был установлен на false.
- android.enableJetifier: если установлено значение true, этот флаг указывает, что вы хотите иметь поддержку инструмента (от плагина Android Gradle) для автоматического преобразования существующих сторонних библиотек, как если бы они были написаны для AndroidX. Если флаг отсутствует, Android Studio ведет себя так, как если бы флаг был установлен на false.
Предварительное условие для Jetiser:
- вам нужно использовать хотя бы
Android Studio 3.2
Чтобы включить реактор, добавьте эти две строки в файл gradle.properties
:
android.useAndroidX=true
android.enableJetifier=true
Наконец, пожалуйста, отметьте заметки о выпуске AndroidX, потому что у jetifier
все еще есть проблемы с некоторыми библиотеками (например, Dagger Android): https://developer.android.com/topic/libraries/support-library/androidx-rn
Ответ 2
Вручную добавив android.useAndroidX=true
и android.enableJetifier=true
получаю трудное время. Потому что это вызывает какую-то ошибку или Suggestion: add 'tools:replace="android:appComponentFactory"' to <application>
Включить Jet-fire в проекте есть опция в Android Studio
Выберите ваш проект ---> Щелкните правой кнопкой мыши
app→ Refactor → Миграция на AndroidX
Показанный на изображении ниже: -
После нажмите на Миграция на AndroidX.
Он запросит подтверждение и резервную копию вашего проекта.
И последний шаг, он попросит вас сделать рефакторинг.
После выполнения Refactor проверьте, что ваши gradle.properties имеют android.useAndroidX=true
и android.enableJetifier=true
. Если это не так, добавьте эти две строки в файл gradle.properties:
android.useAndroidX=true
android.enableJetifier=true
Ответ 3
Вам не нужно беспокоиться
Просто включите Jetifier в своем проекте.
Он преобразует все библиотеки поддержки вашей зависимости в AndroidX во время выполнения (у вас могут быть ошибки времени компиляции, но приложение будет работать).
Ответ 4
Я использовал эти две строки кода в теге приложения в manifest.xml, и это сработало.
tools:replace="android:appComponentFactory"
android:appComponentFactory="whateverString"
Источник: https://github.com/android/android-ktx/issues/576#issuecomment-437145192