Ошибка слияния манифеста при добавлении библиотеки butterknife - PullRequest
0 голосов
/ 05 февраля 2019
dependencies {
    implementation 'com.jakewharton:butterknife:10.0.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
    implementation 'com.squareup.picasso:picasso:2.71828'
    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'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

}

Это зависимости в build.gradle

Ошибка слияния манифеста: Атрибут application @ appComponentFactory value = (android.support.v4.app.CoreComponentFactory) из [com.android.support: support-compat: 28.0.0] AndroidManifest.xml: 22: 18-91 также присутствует в [androidx.core: core: 1.0.0] AndroidManifest.xml: 22: 18-86 value = (androidx.core.app.CoreComponentFactory).Предложение: добавьте 'tools: replace = "android: appComponentFactory"' к элементу на AndroidManifest.xml: 7: 5-21: 19, чтобы переопределить.

Я хотел добавить библиотеку в мой проект,она называется библиотекой ButterKnife, до добавления этой библиотеки проект был в порядке, но, как я добавил эту библиотеку.Ошибка слияния манифеста.

Что я пробовал?Я добавил эти строки в свой AndroidManifest.xml:

tools:replace="android:appComponentFactory"
android:appComponentFactory="whateverString"

Но это породило еще один набор ошибок

, вызванных: com.android.tools.r8.utils.AbortException:Ошибка: методы статического интерфейса поддерживаются только начиная с Android N (--min-api 24): void butterknife.Unbinder.lambda $ static $ 0 ()

Я попытался удалить библиотеку butterknife, а затемстроит точно.

Я также попытался добавить только одну из этих строк:

tools:replace="android:appComponentFactory"

Это ничего не дало и вызвала еще одну ошибку:

Слияние манифеста не удалось снесколько ошибок, см. журналы

Я пытался Refractor-> перенести на androidx, это создало новую проблему в файле Java, которая теперь говорит, что «не может разрешить символ R»

ТакЧто я должен делать, я следую некоторый онлайн-курс для разработки приложений.И у человека, читающего этот курс, похоже, нет таких ошибок.

Ответы [ 2 ]

0 голосов
/ 09 февраля 2019

выпуск

Я думаю, что что-то не так в текущей (последней) версии Butterknife.Самое простое решение, которое я нашел для этой проблемы, состоит в том, что измените версию, к которой применяется Butterknife.

Одно возможное решение

Я изменил это

implementation 'com.jakewharton:butterknife:10.0.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'

на это

   implementation 'com.jakewharton:butterknife:7.0.1'
    annotationProcessor 'com.jakewharton:butterknife-compiler:7.0.1'

Зачем это нужно?

Что мы сделали, так это то, что теперь мы будем использовать более старую версию Butterknife, версию, которая работает.

0 голосов
/ 05 февраля 2019

com.jakewharton:butterknife:10.0.0 использует AndroidX.Отметьте здесь .

Но вы также зависите от com.android.support:appcompat-v7:28.0.0.

Не следует смешивать зависимости, используя AndroidX с не AndroidX.

У вас есть два варианта:

  1. Использовать более низкую версию для ButterKnife.
  2. Мигрировать на AndroidX.

Чтобы перейти на AndroidX:

Используйте androidx.appcompat:appcompat:1.0.0 вместо com.android.support:appcompat-v7:28.0.0.

Добавьте следующее к вашему gradle.properties:

android.useAndroidX=true
android.enableJetifier=true

Измените импорт AppCompatActivity вашей деятельности с

import android.support.v7.app.AppCompatActivity;

на

import androidx.appcompat.app.AppCompatActivity;

Проверьте руководство по миграции здесь .

...