Тип программы уже присутствует: android.support.v4.app.INotificationSideChannel$Stub$Proxy

Я знаю, что это может выглядеть как Этот вопрос но исправить предложенным решением не смог и прокомментировать тоже не мог. Ошибка:

Program type already present: 
android.support.v4.app.INotificationSideChannel$Stub$Proxy
Message{kind=ERROR, text=Program type already present: 
android.support.v4.app.INotificationSideChannel$Stub$Proxy, sources=[Unknown 
source file], tool name=Optional.of(D8)}

Я пытаюсь создать приложение с помощью Firebase, это мой файл Gradle.

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
    minSdkVersion 27
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
aaptOptions {
    noCompress "tflite"
}
}

dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.0.0-rc01'
implementation 'androidx.constraintlayout:constraintlayout:1.1.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.0-alpha4'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4'
implementation 'com.google.android.material:material:1.0.0-rc01'
implementation 'androidx.cardview:cardview:1.0.0-rc01'

// ML Kit dependencies
implementation 'com.google.firebase:firebase-core:16.0.1'
implementation 'com.google.firebase:firebase-ml-vision:17.0.0'
}
apply plugin: 'com.google.gms.google-services'

Я просматриваю каждый файл, чтобы убедиться, что импорт был хорошим, я также добавляю

android.useAndroidX = true
android.enableJetifier = false

Вот мой файл проекта Gradle:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {

repositories {
    google()
    jcenter()
}
dependencies {
    classpath 'com.android.tools.build:gradle:3.1.4'
    classpath 'com.google.gms:google-services:4.1.0'


    // 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
}

Я использую Android Studio 3.1.4.


person Morphy    schedule 19.08.2018    source источник
comment
На данный момент я просто прекращаю использовать androidx, и он работает как можно лучше, я все еще надеюсь, что смогу найти проблему и объединиться с androidx.   -  person Morphy    schedule 04.09.2018
comment
Я ответил на него здесь. Надеюсь, это сработает для вас.   -  person Ashu Tyagi    schedule 28.09.2018
comment
Спасибо @AshuTyagi, я смог мигрировать. Я использую ваше решение + Refractor › Migrate to AndroidX. После этого я просматриваю свой импорт, чтобы вручную перенести их на androidx (например, Nullable). Он компилируется и запускается, но мои приложения больше не запускаются на моем устройстве, мне нужно выяснить, почему, но все еще ближе к решению, чем раньше.   -  person Morphy    schedule 29.09.2018
comment
libGDX проверьте это: stackoverflow.com/a/61377080/5733853   -  person VahidHoseini    schedule 23.04.2020


Ответы (5)


Это случилось со мной, когда я пытался перейти на Android X. Причина в том, что не все библиотеки были перенесены на Android X.

  • Вы можете удалить зависимости вручную. Попробуйте просмотреть все зависимости и найти конфликтующую. Вы можете использовать плагин Gradle View для Android Studio или использовать навигацию по классам из меню. (В Android Studio: Навигация -> класс; теперь появляется окно поиска и отметьте «включить элементы, не относящиеся к проекту»; вставьте полное имя класса, создающее ошибку, и выполните поиск сейчас; найдите класс, имеющий эту зависимость, и удалить вручную!). Пожалуйста, проверьте, не остались ли у вас какие-либо операторы импорта в файлах, которые все еще используют зависимости, отличные от AndoirdX. Если да, удалите их тоже.

или

  • В студии Android Refractor -> Миграция на AndroidX.

или альтернативно (вручную)

  • добавьте следующее в gradle.properties .
   android.useAndroidX=true
   android.enableJetifier=true

Это заставляет Android Studio переносить все зависимости. Для получения дополнительной информации посетите здесь

person Jose    schedule 14.01.2019

У меня аналогичная проблема. В моем случае это произошло потому, что я использую библиотеку Glide и androidx. Это решение работает для меня:

  1. Установите значение enableJetifier на true
  2. Обновите инструмент сборки Gradle до 3.3.0-alpha08 с помощью Gradle версии 4.9.

источник

person sigitbn    schedule 09.09.2018

в моем случае просто измените свою версию firebase с

implementation 'com.google.firebase:firebase-auth:19.1.0'

к реализации 'com.google.firebase:firebase-auth:16.1.0'

person Ravi.Sh    schedule 05.11.2019

вы можете исправить это, добавив их в свой gradle.properties

   android.useAndroidX=true
   android.enableJetifier=true

но в некоторых случаях это будет неправильно, например, игры libGDX для правильной работы в играх libGDX, вы должны изменить эти коды в build.gradle:

configurations.natives.files.each { jar ->
        def outputDir = null
        if(jar.name.endsWith("natives-arm64-v8a.jar")) outputDir = file("libs/arm64-v8a")
        if(jar.name.endsWith("natives-armeabi-v7a.jar")) outputDir = file("libs/armeabi-v7a")
        if(jar.name.endsWith("natives-armeabi.jar")) outputDir = file("libs/armeabi")
        if(jar.name.endsWith("natives-x86_64.jar")) outputDir = file("libs/x86_64")
        if(jar.name.endsWith("natives-x86.jar")) outputDir = file("libs/x86")
        if(outputDir != null) {
            copy {
                from zipTree(jar)
                into outputDir
                include "*.so"
            }
        }
    }

к этому:

configurations.getByName("natives").copy().files.each { jar ->
    def outputDir = null
    if (jar.name.endsWith("natives-armeabi-v7a.jar")) outputDir = file("libs/armeabi-v7a")
    if (jar.name.endsWith("natives-armeabi.jar")) outputDir = file("libs/armeabi")
    if (jar.name.endsWith("natives-arm64-v8a.jar")) outputDir = file("libs/arm64-v8a")
    if (jar.name.endsWith("natives-x86.jar")) outputDir = file("libs/x86")
    if (jar.name.endsWith("natives-x86_64.jar")) outputDir = file("libs/x86_64")
    if (outputDir != null) {
        copy {
            from zipTree(jar)
            into outputDir
            include "*.so"
        }
    }
}

это будет работать правильно.

person VahidHoseini    schedule 22.04.2020

В меню Android Studio Навигация --> Класс --> Все (установите флажок «Включить во всех местах») введите свой класс (INotificationSideChannel), и вы увидите более одного пакета зависимостей — просто удалите один из них из вашего градиента. строить! Это часто проблема, когда вы используете зависимости от Android и androidx в одном проекте.

person Konstantin    schedule 14.10.2020