Дублированный класс android.support.v4.app.INotificationSideChannel найден в модулях классов?

Я разрабатываю новостное приложение, но я получаю следующие ошибки из консоли Gradle

(androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class android.support.v4.app.INotificationSideChannel$Stub found in modules classes.jar (androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class android.support.v4.app.INotificationSideChannel$Stub$Proxy found in modules classes.jar (androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class android.support.v4.graphics.drawable.IconCompatParcelizer found in modules classes.jar (androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class android.support.v4.os.IResultReceiver found in modules classes.jar (androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class android.support.v4.os.IResultReceiver$Stub found in modules classes.jar (androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class android.support.v4.os.IResultReceiver$Stub$Proxy found in modules classes.jar (androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class android.support.v4.os.ResultReceiver found in modules classes.jar (androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class android.support.v4.os.ResultReceiver$1 found in modules classes.jar (androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class android.support.v4.os.ResultReceiver$MyResultReceiver found in modules classes.jar (androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class android.support.v4.os.ResultReceiver$MyRunnable found in modules classes.jar (androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class androidx.core.graphics.drawable.IconCompatParcelizer found in modules classes.jar (androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class androidx.core.internal.package-info found in modules classes.jar (androidx.core:core:1.0.1) and classes.jar (com.android.support:support-compat:28.0.0)
Duplicate class androidx.versionedparcelable.CustomVersionedParcelable found in modules classes.jar (androidx.versionedparcelable:versionedparcelable:1.0.0) and classes.jar (com.android.support:versionedparcelable:28.0.0)
Duplicate class androidx.versionedparcelable.NonParcelField found in modules classes.jar (androidx.versionedparcelable:versionedparcelable:1.0.0) and classes.jar (com.android.support:versionedparcelable:28.0.0)
Duplicate class androidx.versionedparcelable.ParcelField found in modules classes.jar (androidx.versionedparcelable:versionedparcelable:1.0.0) and classes.jar (com.android.support:versionedparcelable:28.0.0)
Duplicate class androidx.versionedparcelable.ParcelImpl found in modules classes.jar (androidx.versionedparcelable:versionedparcelable:1.0.0) and classes.jar (com.android.support:versionedparcelable:28.0.0)
Duplicate class androidx.versionedparcelable.ParcelImpl$1 found in modules classes.jar (androidx.versionedparcelable:versionedparcelable:1.0.0) and classes.jar (com.android.support:versionedparcelable:28.0.0)
Duplicate class androidx.versionedparcelable.ParcelUtils found in modules classes.jar (androidx.versionedparcelable:versionedparcelable:1.0.0) and classes.jar (com.android.support:versionedparcelable:28.0.0)
Duplicate class androidx.versionedparcelable.VersionedParcel found in modules classes.jar (androidx.versionedparcelable:versionedparcelable:1.0.0) and classes.jar (com.android.support:versionedparcelable:28.0.0)
Duplicate class androidx.versionedparcelable.VersionedParcel$1 found in modules classes.jar (androidx.versionedparcelable:versionedparcelable:1.0.0) and classes.jar (com.android.support:versionedparcelable:28.0.0)
Duplicate class androidx.versionedparcelable.VersionedParcel$ParcelException found in modules classes.jar (androidx.versionedparcelable:versionedparcelable:1.0.0) and classes.jar (com.android.support:versionedparcelable:28.0.0)
Duplicate class androidx.versionedparcelable.VersionedParcelParcel found in modules classes.jar (androidx.versionedparcelable:versionedparcelable:1.0.0) and classes.jar (com.android.support:versionedparcelable:28.0.0)
Duplicate class androidx.versionedparcelable.VersionedParcelStream found in modules classes.jar (androidx.versionedparcelable:versionedparcelable:1.0.0) and classes.jar (com.android.support:versionedparcelable:28.0.0)
Duplicate class androidx.versionedparcelable.VersionedParcelStream$FieldBuffer found in modules classes.jar (androidx.versionedparcelable:versionedparcelable:1.0.0) and classes.jar (com.android.support:versionedparcelable:28.0.0)
Duplicate class androidx.versionedparcelable.VersionedParcelStream$InputBuffer found in modules classes.jar (androidx.versionedparcelable:versionedparcelable:1.0.0) and classes.jar (com.android.support:versionedparcelable:28.0.0)
Duplicate class androidx.versionedparcelable.VersionedParcelable found in modules classes.jar (androidx.versionedparcelable:versionedparcelable:1.0.0) and classes.jar (com.android.support:versionedparcelable:28.0.0)
Duplicate class androidx.versionedparcelable.VersionedParcelize found in modules class

ниже моего app.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.example.myapplication"
        minSdkVersion 15
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    implementation 'com.github.bassaer:chatmessageview:2.0.1'
    implementation 'com.google.code.gson:gson:2.8.5'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

Ответы

Ответ 1

Вы можете добавить следующие строки в ваш файл gradle.properties:

android.useAndroidX=true
android.enableJetifier=true

Ответ 2

Я сталкиваюсь с чем-то вроде этого, и ниже на основе моего другого ответа:

Ваш проект (или один из его подпроектов) ссылается на зависимость с помощью знака плюс + в конце, например, com.google.firebase:firebase-auth:+, что означает использование любой более высокой версии, когда это возможно, и эту более новую версия больше не использует библиотеки android.support и вместо этого использует androidx; Чтобы устранить эту проблему, выполните следующие действия.

Этапы:

  1. Убедитесь, что установлена переменная среды ANDROID_HOME, а затем откройте окно консоли (например, git-bash, поскольку оно сохраняет весь вывод команды) и cd в каталог android (для проектов Ionic это должно быть platforms/android).
  2. Во-первых, перечислите все зависимости, запустив ниже (в git-bash):
    ./gradlew :app:dependencies
    
  3. Скопируйте результат в нужный текстовый редактор и найдите androidx.
  4. Если вы нашли что-то, выполните следующие шаги, иначе вы сделали! (и вам не нужно повторять эти шаги).
  5. Прокручивайте вверх, пока не увидите -> в конце любой строки, например 16.0.8 -> 19.0.0 или + -> 19.0.0, что означает, что версия была автоматически разрешается (что-то выше указанного вами из-за +).
  6. Итак, установите версию вручную:
    • По возможности, в своем проекте (или подпроекте) найдите и замените знак + конкретной версией.
    • Или принудительно установите конкретную версию зависимостей, как указано ниже.
  7. Наконец, повторите вышеуказанные шаги (но вместо первого шага просто clear консоль).

Чтобы принудительно установить конкретную версию зависимостей, добавьте в свой корневой файл build.gradle что-то вроде ниже (что мне помогло), но, конечно, отредактируйте ниже и добавьте свои собственные правила (потому что они могут не работать для вас). случай):

allprojects {
  // ...
  configurations.all {
    resolutionStrategy {
      force 'com.google.firebase:firebase-common:17.0.0'
      force 'com.google.android.gms:play-services-basement:16.2.0'
      force 'com.google.firebase:firebase-iid:16.0.0'
      force 'com.google.firebase:firebase-auth:17.0.0'
    }
  }
}

Ответ 3

enter image description here

Взято из здесь. AndroidX - это проект с открытым исходным кодом, который команда Android использует для разработки, тестирования, упаковки, версии и выпуска библиотек в Jetpack.

Ответ 4

Добавление этих строк в файл gradle.properties устраняет ошибки "Duplicate Class":

android.useAndroidX=true

android.enableJetifier=true

Однако в моем проекте возникли новые ошибки:

"Пакет android.support.annotation не существует"

"не удается найти фрагмент класса символов"

"Пакет android.support.v4.content не существует"

"Тип программы уже присутствует"

и т.д.

Однако рефакторинг сработал для меня:

Migrate your project to AndroidX by selecting Refactor > 
"Migrate to AndroidX" from the menu bar.

Select Build > Clean project

Restore Android Studio

Теперь мой проект (Match4app) работает с AndroidX, и я смог опубликовать его в PlayStore без каких-либо проблем.

Комментарий: Эта задача также позволила мне обновить все остальные библиотеки, которые зависят от AndroidX (например, com.firebaseui: firebase-ui-auth: 6.0.2, com.google.android.gms: play-services-games: 18.0.1, com.google.android.gms: play-services-auth: 17.0.0, com.google.android.gms: play-services-ads: 18.2.0 и т.д.).

Ответ 5

Я добавил это, но это не работает, что-то не так?

Ответ 6

не работает для меня, получить ошибку после его использования?