Могу ли я использовать библиотеку, которая использовала поддержку 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

Показанный на изображении ниже: -

enter image description here

После нажмите на Миграция на AndroidX.

Он запросит подтверждение и резервную копию вашего проекта.

enter image description here

И последний шаг, он попросит вас сделать рефакторинг.

enter image description here

После выполнения Refactor проверьте, что ваши gradle.properties имеют android.useAndroidX=true и android.enableJetifier=true. Если это не так, добавьте эти две строки в файл gradle.properties:

android.useAndroidX=true
android.enableJetifier=true

Ответ 3

Вам не нужно беспокоиться

Просто включите Jetifier в своем проекте.

  • Обновите Android Studio до версии 3.2.0 или новее.
  • Откройте gradle.properties и добавьте две строки ниже.

    android.enableJetifier=true
    android.useAndroidX=true
    

Он преобразует все библиотеки поддержки вашей зависимости в AndroidX во время выполнения (у вас могут быть ошибки времени компиляции, но приложение будет работать).