проблема миграции androidx с несколькими библиотеками

Я недавно перешел на androidx и столкнулся с этими проблемами.

Проблема :

введите здесь описание изображения  введите описание изображения здесь

Моя конфигурация

build.gradle (приложение):

 apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.crazy.tuhin.aroundme"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode 5
        versionName "1.4"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'com.google.android.material:material:1.1.0'
    implementation 'androidx.recyclerview:recyclerview:1.1.0'
    implementation 'androidx.cardview:cardview:1.0.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
    implementation 'com.google.android.material:material:1.1.0'
    implementation 'androidx.annotation:annotation:1.1.0'
    //google
    implementation 'com.google.android.gms:play-services-maps:17.0.0'
    implementation 'com.google.android.gms:play-services-location:17.0.0'
    implementation 'com.google.android.gms:play-services-places:17.0.0'


}

build.gradle (проект):

buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.6.3'


        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

gradle-wrapper.properties:

#Fri Apr 10 02:21:34 IST 2020
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip

settings.gradle:

org.gradle.jvmargs=-Xmx1536m
android.useAndroidX=true
android.enableJetifier=true

Моя версия студии Android:

Android Studio 3.6.2

У меня вопрос: нужно ли изменять каждый импорт вручную? но у меня есть это android.enableJetifier=true

Не могли бы вы указать на проблему? Уже упомянутые проблемы и решения здесь не помогают. Спасибо.


person Tuhin Subhra    schedule 03.06.2020    source источник
comment
Выберите Refactor ›Migrate to AndroidX. Дополнительная информация здесь   -  person Gabriele Mariotti    schedule 03.06.2020
comment
@GabrieleMariotti Да, я выполнил этот шаг, чтобы перейти   -  person Tuhin Subhra    schedule 03.06.2020
comment
Удалите импорт v7 / support и обновите его с помощью нового импорта   -  person Gabriele Mariotti    schedule 03.06.2020


Ответы (2)


У меня вопрос: нужно ли изменять каждый импорт вручную?

Да, нужно.

android.enableJetifier=true помогает переносить сторонние зависимости для использования AndroidX. Jetifier изменит байтовый код этих зависимостей, чтобы сделать их совместимыми с проектами, использующими AndroidX.

Ниже приведены правильные шаги для миграции -

Подготовка к переносу

Перед тем, как начать переход на AndroidX, вам необходимо:

  • Создайте новую ветку, в которой нужно внести изменения миграции.
  • Если возможно, приостановите или минимизируйте разработку (по крайней мере, не пытайтесь провести рефакторинг или добавить новые функции) во время миграции, так как это поможет уменьшить количество возможных конфликтов слияния.

Перенести

На всех этапах миграции основное внимание уделяется устранению ошибок, компиляции приложения и прохождению всех тестов.

Шаг 1:

Непосредственный переход на AndroidX из более старой версии библиотеки поддержки, скажем, 26 или 27, не рекомендуется. Обновите приложение. Обновите проект, чтобы использовать последнюю версию библиотеки поддержки: версия 28.0.0. Это связано с тем, что артефакты AndroidX с версией 1.0.0 являются двоичным эквивалентом артефактов библиотеки поддержки 28.0.0. Затем внесите все изменения в API и убедитесь, что ваше приложение скомпилировано с версией 28.

Шаг 2:

Обновите сторонние зависимости до последней версии. Невыполнение этого может привести к необъяснимым ошибкам компиляции.

Шаг 3:

Включите следующие флаги в gradle.properties. В Android Studio 3.2 и выше вы можете перенести существующий проект на AndroidX, выбрав Refactor> Migrate to AndroidX в строке меню.

android.enableJetifier=true - Jetifier помогает переносить сторонние зависимости для использования AndroidX. Jetifier изменит байтовый код этих зависимостей, чтобы сделать их совместимыми с проектами, использующими AndroidX.

android.useAndroidX=true - Подключаемый модуль Android использует соответствующую библиотеку AndroidX вместо библиотеки поддержки.

person Anoop M Maddasseri    schedule 03.06.2020

РЕШЕНО

Если вы столкнетесь с такой досадной проблемой, как моя, сделайте следующее:

1. Удалите весь неиспользуемый импорт (серый цвет) из каждого класса.

введите описание изображения здесь

2. Теперь импортируйте необходимые классы следующим образом:

введите описание изображения здесь

3. Повторите эти действия для каждого родственного курса.

person Tuhin Subhra    schedule 03.06.2020