Ошибка библиотеки дизайна материалов Google. Тип программы уже присутствует: android.support.v4.app.INotificationSideChannel $ Stub $ Proxy

Каждый раз, когда я добавляю implemntation 'com.google.android.material:material:1.0.0-alpha1', когда пытаюсь собрать свой проект, Android Studio говорит:

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

Это мой скрипт Gradle:

    apply plugin: 'com.android.application'

android {
    compileSdkVersion 'android-P'
    defaultConfig {
        applicationId "it.smart.bab3"
        minSdkVersion 21
        targetSdkVersion 'p'
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0-alpha1'
    implementation 'com.google.android.material:material:1.0.0-alpha1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'com.android.support:design:28.0.0-alpha1'
    implementation 'com.android.support:support-v4:28.0.0-alpha1'
}

Я новичок в этом типе ошибок, и я не нашел ничего с этой ошибкой. Спасибо

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
38
0
51 782
14
Перейти к ответу Данный вопрос помечен как решенный

Ответы 14

Попробуй добавить

android.enableD8 = false

в файл gradle.properties.

Ошибка теперь у меня com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex.

Wei Chan 11.05.2018 17:22
android.enableD8 = false устарел. По умолчанию D8 отключен. Вы можете использовать только android.enableD8 = true, чтобы включить его.
gadgetroid 12.05.2018 13:49

Он устарел, но он также делает сборку успешной для меня, поэтому установка значения false имеет некоторые побочные эффекты, не охватываемые по умолчанию.

Fisk Debug 15.05.2018 10:36
Ответ принят как подходящий

Я тоже весь день борюсь с этой проблемой. Наконец мне удалось скомпилировать и успешно запустить проект.

Прежде всего, избавьтесь от этого:

implementation 'com.android.support:appcompat-v7:28.0.0-alpha1'
implementation 'com.android.support:design:28.0.0-alpha1'
implementation 'com.android.support:support-v4:28.0.0-alpha1'

Добавьте в свой файл gradle.properties следующее:

android.useAndroidX = true
android.enableJetifier = false

И, наконец, синхронизируйте проект, а затем скомпилируйте.

Если это не сработает, очистите проект, а затем перестройте его.

PS: Я не могу заставить targetSdkVersion 'p' работать. Мой файл build.gradle выглядит следующим образом:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 'android-P'
    defaultConfig {
        applicationId "com.github.alvarosct02.demo"
        minSdkVersion 19
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'com.google.android.material:material:1.0.0-alpha1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'

    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

}

Надеюсь, это сработает и для вас.

Хотя сначала мне казалось, что это сработало, теперь возникает та же ошибка после того, как я добавил Room в проект.

gadgetroid 12.05.2018 13:43

помните, что для использования совместимости приложений и прочего просмотрите эту страницу: -developer.android.com/topic/libraries/support-library/‌ рефакторинг

jeevan s 17.05.2018 07:19

Не нужно добавлять android.useAndroidX = true или android.enableJetifier = false. Просто убедитесь, что вы используете библиотеки поддержки AndroidX, а не библиотеки поддержки v4 или v7. Обратитесь к developer.android.com/topic/libraries/support-library/refact‌ или

Ranjeet 17.05.2018 10:40

Привет, ребята! У меня та же проблема, я попробовал вышеуказанное решение, но оно не сработало. Android Studio 3.1.3 Gradle файл:

GFPF 20.06.2018 01:35

@Alvaro, из документации "Внимание! В текущей версии Android Studio 3.2 Canary существует известная проблема, из-за которой флаг android.useAndroidX не устанавливается при использовании мастера создания нового проекта. На данный момент вам необходимо установить установите флаг вручную в файле gradle.properties. Если вы хотите немедленно начать использовать библиотеки AndroidX и вам не нужно преобразовывать существующие сторонние библиотеки, вы можете установить для флага android.useAndroidX значение true, а для флага android.enableJetifier - значение false. . " Ссылка - developer.android.com/studio/preview/features Пожалуйста, включите это в ответ.

Debanjan 20.06.2018 10:21

@Debanjan Вы имеете в виду ссылку? Смена флагов - часть ответа

Alvaro Santa Cruz 04.07.2018 18:27

@alvaro да. Я имел в виду ссылку. Это было бы прекрасно.

Debanjan 04.07.2018 19:13

Вы предлагаете добавить android.useAndroidX = true и android.enableJetifier = false, но в вашем градиенте сборки нет таких строк. Куда мне их положить? Я получаю: Не удалось установить неизвестное свойство useAndroidX для объекта типа com.android.build.gradle.AppExtension.

SMGhost 01.08.2018 23:08

@SMGhost В файле gradle.properties. Не пытайтесь сделать это на build.gradle

Alvaro Santa Cruz 02.08.2018 00:01

когда я использую firebase sdk с этим, он показывает ту же ошибку, не сработало это решение

Anant Shah 15.08.2018 15:19

@Debanjan, если я не хочу использовать androdx, тогда используйте только библиотеку v4 v7?

Er.nishka 17.07.2019 07:26

@ Er.nishka Если вы пока не хотите переходить на новые пакеты androidx и com.google.android.material, вы можете использовать компоненты материала через зависимость com.android.support:design:28.0.0. Примечание. Вы не должны использовать зависимости com.android.support и com.google.android.material в своем приложении одновременно. Обратитесь к material.io/develop/android/docs/getting-started

Debanjan 19.07.2019 13:59

@Debanjan спасибо, но я также не использую материальные зависимости

Er.nishka 22.07.2019 08:38

@ Er.nishka, если вы столкнулись с этой проблемой, даже если вы не используете материальные зависимости, возможно, некоторые из ваших зависимостей делают это транзитивно. Проверьте транзитивные зависимости, используя gradle, если это не решит, задайте отдельный вопрос.

Debanjan 22.07.2019 09:02

@ Er.nishka Вы нашли ответ? Как настроить таргетинг на 28 и не использовать androidx.

Aman Verma 28.10.2019 13:28

Использовать это

   apply plugin: 'com.android.application'
   apply plugin: 'kotlin-android'

   android {
   compileSdkVersion 28
   defaultConfig {
       applicationId "ir.uncode.newdesign"
       minSdkVersion 16
       targetSdkVersion 27
       versionCode 1
       versionName "1.0"
       testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
   }
   buildTypes {
       release {
           minifyEnabled false
           proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguardrules.pro'
       }
    }
    }

   dependencies {
   implementation fileTree(dir: 'libs', include: ['*.jar'])
   implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'
   implementation 'com.android.support:cardview-v7:28.0.0-alpha3'
   implementation 'com.android.support:design:28.0.0-alpha3'
   implementation 'com.android.support.constraint:constraint-layout:1.1.1'
   implementation 'com.android.support:animated-vector-drawable:28.0.0-alpha3'}
   repositories {
    mavenCentral()
   }

и если проблема не исчезнет, ​​измените «импорт» на класс и xml.

нравиться :

import androidx.fragment.app.Fragment;

import android.support.v4.app.Fragment;

или же

import androidx.core.app.ActivityCompat;

import android.support.v4.app.ActivityCompat;

или же

com.google.android.material.bottomappbar.BottomAppBar

android.support.design.bottomappbar.BottomAppBar

Можете ли вы объяснить, что вы изменили по сравнению с исходным сценарием и почему?

Nico Haase 19.06.2018 13:26

@NicoHaase, нам не нужно использовать android-P для compileSdkVersion, и вместо этого мы используем 28. 28.0.0-alpha1 и material: 1.0.0-alpha1 для меня были проблемы с большим количеством библиотек. и с изменением вашего градиента, как это, решаются многие проблемы. и вам не нужно добавлять android.useAndroidX = true android.enableJetifier = false. Я тестировал его и думаю, может быть, это поможет другим разработчикам.

Hamed Karami 19.06.2018 14:52

@ NicoHaase, я снова прочитал вопрос и думаю, что лучше ответить на ваш вопрос: «Почему мы хотим использовать материал: 1.0.0-alpha1» ?! ОК. Ответ - это новый материальный дизайн. неважно, какой из них мы используем. но у нас будет много проблем, если мы будем использовать материал: 1.0.0-alpha1. Конечно это мой опыт;).

Hamed Karami 19.06.2018 15:40

Моя основная мотивация: вы должны выделить, какие именно изменения решают проблему, вместо того, чтобы размещать двадцать строк кода «используйте этот». Если кто-то столкнется с подобной проблемой, он должен просто увидеть: «Мне нужно изменить эту единственную строчку».

Nico Haase 19.06.2018 16:07

Я начал получать эту ошибку после обновления ButterKnife до версии 8.8.1.

Итак, я запускаю команду gradle -q dependencies, чтобы сгенерировать отчет о зависимостях, после чего вы должны увидеть, откуда приходит D8. В моем случае из библиотеки "ButterKnife":

+--- com.jakewharton:butterknife:8.8.1
|    |    \--- com.android.support:support-compat:d8

Также вы можете увидеть свои зависимости Android, перейдя в представление Android Studio Gradle (на панели инструментов Android Studio перейдите к «View / Tool Windows / Gradle») и выберите цель «androidDependencies» в разделе «My-Project-Name / Tasks / android "(дважды щелкните для запуска или щелкните правой кнопкой мыши и запустите).

Чтобы решить эту проблему, я добавил этот фрагмент кода exclude module: 'support-compat' в свой "app / build.gradle", как показано ниже:

implementation ('com.jakewharton:butterknife:8.8.1') { 
     exclude module: 'support-compat' 
} 
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'

Надеюсь, это сработает для кого-то еще:] Ура!

Подходящий способ справиться с этим - обновить плагин Android Gradle как минимум до версии 3.2.0-alpha14, а затем убедиться, что у вас есть android.enableJetifier=true в вашем файле gradle.properties.

Victor Rendina 23.09.2018 16:46

Выполнение исключения дает мне следующее: Не удалось найти метод com.jakewharton: butterknife: 8.8.1 () для аргументов [build_aay4rtv2iznrl6v18va02zedg $ _run_closure2 $ _closure6 @ 10a‌ fe254] для объекта типа org.gradle.api.internal.artifacts .dsl.dependencies.DefaultDe pendencyHandler.

IainCunningham 24.09.2018 15:05

If you want to use com.android.support:support-v4:28.0.0-alpha1,

then you have to use

com.android.support:design:28.0.0-alpha1

instead of

com.google.android.material:material:1.0.0-alpha1.

Android Studio v3.2 + решает эту проблему. Он также добавляет пункт «Переход на AndroidX» в меню «Рефакторинг». Никакого обходного пути или отката не требуется.

Обновите Android Studio на бета-канале, чтобы использовать 3.2+, или дождитесь выхода стабильной версии.

Обновлено: Android Studio v3.2 теперь находится в стабильном канале. Важно, чтобы вы больше не использовали библиотеки поддержки и переходили на библиотеки AndroidX, поскольку поддержка старых библиотек поддержки закончилась.

Обновление до последней версии Android Studio и запуск Migrate to Android X решили проблему для меня.

tmath 29.11.2018 02:11

Если вы включаете библиотеку, которая имеет транзитивную зависимость от библиотеки поддержки Android, вам также необходимо использовать функцию jetifier, которая является частью плагина Android Gradle версии 3.2.0-alpha14 или выше. Вы можете определить, есть ли у вас библиотека, которая зависит от библиотеки поддержки, запустив задачу Gradle dependencies.

Из сообщения в блоге разработчика Android (https://android-developers.googleblog.com/2018/05/hello-world-androidx.html):

If you depend on a library that references the older Support Library, Android Studio will update that library to reference androidx instead via dependency translation. Dependency translation is automatically applied by the Android Gradle Plugin 3.2.0-alpha14, which rewrites bytecode and resources of JAR and AAR dependencies (and transitive dependencies) to reference the new androidx-packaged classes and artifacts. We will also provide a standalone translation tool as a JAR.

В вашем файле gradle.properties убедитесь, что у вас есть:

android.enableJetifier=true android.useAndroidX=true

У меня была проблема с Leak Canary в небольшом проекте, и она была решена обновлением плагина Android Gradle до соответствующей версии. https://github.com/square/leakcanary/issues/1103

Я потратил 2 дня на поиски решения. Любой, кто все еще ищет решение, может выполнить следующие действия:

  1. Обновите Android Studio до последней версии.

  2. Обновите compileSdkVersion и targetSdkVersion до 28.

    android {
    
        compileSdkVersion 28
    
        defaultConfig {
            applicationId "com.your.appid"
            minSdkVersion 19
            targetSdkVersion 28
            versionCode 50
            versionName "1.50"
            testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
            multiDexEnabled true
            setProperty("archivesBaseName", "your-app-$versionName")
            resConfigs "en"
         }
    }
    
  3. Перейдите в структуру своего проекта и измените версию Gradle на 4.10.

  4. Сначала добавьте эту зависимость:

    implementation 'com.google.android.material:material:1.0.0'
    
  5. Теперь удалите все зависимости библиотеки поддержки:

    implementation "com.android.support:design:$SUPPORT_LIBRARY_VERSION"
    implementation "com.android.support:support-v4:$SUPPORT_LIBRARY_VERSION"
    implementation "com.android.support:appcompat-v7:$SUPPORT_LIBRARY_VERSION"
    implementation "com.android.support:recyclerview-v7:$SUPPORT_LIBRARY_VERSION"
    implementation "com.android.support:cardview-v7:$SUPPORT_LIBRARY_VERSION"
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.android.support:multidex:1.0.3'
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    androidTestImplementation('com.android.support.test.espresso:espresso- 
       core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
    exclude group: 'com.google.code.findbugs', module: 'jsr305'
    })
    
  6. Теперь вставьте в файл gradle.properties следующее:

    android.useAndroidX = true
    android.enableJetifier = true
    
  7. В файле build.gradle уровня вашего проекта:

    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.0'
        classpath 'com.google.gms:google-services:4.1.0'
    };
    

For those who are using Butterknife add below lines in your project level build.gradle file:

allprojects {
    repositories {
    google()
    jcenter()
    maven { url "https://jitpack.io" }
    maven { url "https://dl.bintray.com/drummer-aidan/maven/" }
    maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
  }
}

And in your module build.gradle file add below dependencies:

 implementation "com.jakewharton:butterknife:9.0.0-SNAPSHOT"
 annotationProcessor "com.jakewharton:butterknife-compiler:9.0.0-SNAPSHOT"
  1. Теперь перейдите к Сборка> Перестроить проект, тогда вы можете получить много ошибок.
  1. Now refer this link.

    It has the list of all the old (android.support) vs new (androidx.*) dependencies.

    Replace all your old imports with the new ones
    (Use replaceAll feature of android studio [ctrl + shift + R] which will save you some time).
  1. Наконец, после рефакторинга всех старых библиотек новыми:
    Перестройте проект еще раз, и, надеюсь, он должен работать.

Note: You can also use Refactor > Migrate to androidx in android studio but it didn't work for me.

Игнорируйте этот ответ. Android Studio v3.2 + решает проблему без отката к заброшенным библиотекам поддержки. Воспользуйтесь функцией «Переход на AndroidX» в меню «Рефакторинг» и избавьтесь от головной боли!

Always Lucky 08.10.2018 18:18

@AlwaysLucky Я пробовал это, но у меня это не сработало. Я уже говорил об этом в своем ответе. В любом случае, если он работает сейчас, это даже лучше.

Ashu Tyagi 09.10.2018 10:49

Извините, я прокомментировал неправильный ответ. Я хотел прокомментировать принятый ответ. Какая нубская ошибка, ха-ха. Я ценю время и усилия, которые вы вложили в подробный ответ. Я потратил так много часов на эту проблему, и все, что я сделал для ее решения, - это обновление до бета-версии AS 3.2, поэтому я пытался сэкономить другим время, которое я потратил на эту проблему.

Always Lucky 13.10.2018 19:14

просто не забудьте очистить проект в конце

has19 16.11.2018 19:22

@AshuTyagi, пожалуйста, смотрите meta.stackoverflow.com/questions/355274/… относительно использования цитат ....

piet.t 31.01.2019 10:35

Мне пришлось полностью удалить ButterKnife, чтобы использовать AndroidX. Ваши настройки Maven и рефакторинг -> использовать AndroidX действительно не сработали.

Abhinav Saxena 18.02.2019 11:47

Если вы используете Android Studio V. 3.2.1, вы можете просто перейти на панель инструментов, открыть Refactor -> перейти на AndroidX, и Android Studio позаботится обо всем остальном.

Я использую версию 3.3 студии Android. Я потратил полтора дня на поиски этого решения. Я попробовал все ответы в этом посте, но ничего не помогло. Затем я нахожу ссылку, которая помогла мне исправить ошибку.

Я удалил добавленную ниже зависимость,

implemntation 'com.google.android.material:material:1.0.0'

Вместо этого я использовал библиотеку поддержки дизайна Android,

implementation 'com.android.support:design:27.1.1'

Перейдите в app / build.gradle, в зависимостях удалите эту строку:

implementation "com.android.support:appcompat-v7

Вы можете объяснить, почему вы это предложили?

Burkely91 15.07.2019 21:15

попробуйте установить android.enableJetifier=true и android.useAndroidX=true в вашем файле gradle.properties.

Если у вас есть замена 3.1.0 на 3.2.0:

dependencies {
    classpath 'com.android.tools.build:gradle:3.2.0'
}
  1. Вам нужно перейти на androidx

  2. Удалите весь импорт, начинающийся с import android.support.*

  3. Измените весь импорт на import androix.* и соответствующие компоненты.

Другие вопросы по теме