Не удалось слияние приложений Android и appcompat Manifest

У меня следующий сорт

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0-rc01'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    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.google.android.material:material:1.0.0-rc01'
}

Но когда я хочу создать приложение, я получаю следующий журнал:

Manifest merger failed : Attribute [email protected] value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0-alpha3] AndroidManifest.xml:22:18-91
    is also present at [androidx.core:core:1.0.0-alpha3] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
    Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:5:5-19:19 to override.

Окей! Идите к манифесту и сделайте это:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="ru.chopcode.myapplication">

    <application
        tools:replace="android:appComponentFactory"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
    </application>

</manifest>

Затем я получаю эту ошибку в своем Logcat:

Manifest merger failed with multiple errors, see logs that I have Linked with it

Ответ 1

Просто измените "rc01" в первой и последней строке внутри зависимостей на "alpha1". Это работает для меня

Ответ 2

У меня была похожая проблема. Добавлены две строки в файле gradle.properties:

android.useAndroidX=true
android.enableJetifier=true

Эти две строки автоматически разрешили мои конфликты зависимостей между файлами Google и сторонними зависимостями. Здесь ссылка для следования: https://developer.android.com/topic/libraries/support-library/androidx-overview#new-project

Ответ 3

Я столкнулся с той же ошибкой при попытке добавить библиотеку Kotlin-KTX в мой проект.

Я пытаюсь перейти на AndroidX, и проблема исправлена!

Refactor/Migrate to AndroidX

Ответ 4

Причина неудачи

Вы используете библиотеку материалов, которая является частью AndroidX. Если вы не знаете AndroidX, просмотрите этот ответ.

Одно приложение должно использовать либо AndroidX, либо старые библиотеки поддержки Android. Вот почему вы столкнулись с этой проблемой.

Например -

В вашем gradle вы используете

  • com.android.support:appcompat-v7 (часть старой поддержки --Android Library--)
  • com.google.android.material:material (часть AndroidX) (сборка AndroidX для com.android.support:design)

Решение

Таким образом, решение заключается в использовании AndroidX или старой библиотеки поддержки. Я рекомендую использовать AndroidX, потому что Android не будет обновлять библиотеки поддержки после версии 28.0.0. Смотрите примечания к выпуску библиотеки поддержки.

Просто перейдите на AndroidX. Вот мой подробный ответ для перехода на AndroidX. Я ставлю здесь необходимые шаги из этого ответа.

Перед миграцией настоятельно рекомендуется сделать резервную копию вашего проекта.

Существующий проект

  • Android Studio> Меню рефакторинга> Миграция в AndroidX...
  • Он проведет анализ и откроет окно рефрактора внизу. Принять изменения, которые будут сделаны.

image

Новый проект

Поместите эти флаги в свой gradle.properties

android.enableJetifier=true
android.useAndroidX=true

Проверьте соответствие @Library для одинакового пакета AndroidX.

Проверьте @Официальную страницу миграции на AndroidX

Что такое Jetifier?

Ответ 5

В моем случае это работает отлично.. Я добавил ниже двух строк кода внутри файла манифеста

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

Кредит идет на этот ответ.

Manifest file Example

Ответ 6

Простые решения - перейти на AndroidX

в gradle.properties просто добавьте два сценария ниже

android.useAndroidX=true
android.enableJetifier=true

В чем причина ↓

Все пакеты в AndroidX живут в согласованном пространстве имен, начиная со строки androidx. Пакеты библиотеки поддержки были сопоставлены с соответствующими пакетами androidx. *. Полное сопоставление всех старых классов и артефактов сборки с новыми см. на странице "Рефакторинг пакетов".

Пожалуйста, смотрите страницу рефакторинга пакета

Ответ 8

Просто удалите зависимость от android.support

    implementation 'com.android.support:appcompat-v7:28.0.0-rc01'

Цитата из руководства по материалам

Если вы не хотите переключаться на новые пакеты androidx и com.google.android.material, вы можете использовать материальные компоненты через зависимость com.android.support:design:28.0.0-alpha3.

Примечание. Вы не должны одновременно использовать com.android.support и com.google.android.dependencies в своем приложении.

Просто удаление этой зависимости отлично работает

    implementation 'com.android.support:appcompat-v7:28.0.0-rc01'

Ниже приведен пример полной зависимости

    dependencies {
       implementation fileTree(dir: 'libs', include: ['*.jar'])
       implementation 'com.google.android.material:material:1.0.0-beta01'
       implementation 'com.android.support.constraint:constraint-layout:1.1.2'
       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'
   }

Ответ 9

просто добавьте эти две строки кода в свой файл манифеста

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

Ответ 10

Следуй этим шагам:

  • Перейдите на Refactor и нажмите Migrate to AndroidX
  • Нажмите Do Refactor

Ответ 11

Наконец-то нашел быстрое и простое решение, добавив две строки в файл android/build.gradle.

googlePlayServicesVersion = "16.+"

firebaseVersion = "17.6.0"

Пожалуйста, следуйте этому на 100% правильно.

Ответ 12

Только если вы не хотите использовать AndroidX

Так что в моем случае я использую библиотеку, которая использовала androidx, но я не использую androidx, поэтому, когда я понизил версию этой библиотеки, проблема была решена.

В моем случае:

implementation 'com.github.turing-tech:MaterialScrollBar:13.+'

вышеупомянутая библиотека создает проблему 13. + автоматически получит новую версию библиотеки, которая использует androidx. Поэтому я понизил версию библиотеки до:

implementation 'com.github.turing-tech:MaterialScrollBar:13.2.5'

И проблема была решена.

Ответ 13

  1. Перейдите на Refactor-> Миграция-> Миграция на Android X.

  2. Пожалуйста, добавьте это в ваш файл gradle.properties: android.enableJetifier = верно android.useAndroidX = истина

И выполнить синхронизацию.

Ответ 14

Эта проблема в основном произошла для старых зависимостей.

Там есть 2 решения:

Первый:

Обновите все old dependencies и ClassPath из файлов Project level gradle.

classpath 'com.android.tools.build:gradle:3.3.1'
classpath 'com.google.gms:google-services:4.2.0'

Второй:

Ваш проект Migrate to AndroidX

Из меню Android Studio → Refanctor → Migrate to AndroidX

Спасибо, дайте мне знать, если кто-нибудь поможет от этого ответа.

Ответ 15

1.Добавьте эти коды в конце вашего app/build.gradle:

configurations.all {
   resolutionStrategy.force 'com.android.support:support-v4:28.0.0' 
   // the above lib may be old dependencies version       
    }

2. Модифицированная версия SDK и инструментов до 28:

compileSdkVersion 28
buildToolsVersion '28.0.3'
targetSdkVersion  28

3.В своем файле AndroidManifest.xml вы должны добавить две строки:

<application
    android:name=".YourApplication"
    android:appComponentFactory="AnyStrings"
    tools:replace="android:appComponentFactory"
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:largeHeap="true"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar">

Или просто

  • Перейти к Refactor (Студия → Меню → Refactor)
  • Нажмите Мигрировать на AndroidX. это работает
  • это работает.

Ответ 16

Все, что я сделал, это перешел в опцию "Refactor" в верхнем меню.

Затем выберите "Переход на AndroidX"

Принять, чтобы сохранить проект в виде zip файла.

Пожалуйста, обновите Android Studio, а также Gradle, чтобы не возникало проблем.

Ответ 17

Все дело в совместимости версий библиотек

Я столкнулся с этой странной ошибкой пару 2 часов. Я решил эту ошибку, выполнив следующие действия

передать ваши зависимости build.gradle в

  implementation 'com.google.android.gms:play-services-maps:17.0.0'

в

  implementation 'com.google.android.gms:play-services-maps:15.0.0'

Ответ 18

Перейдите на AndroidX, если это существующий проект. Если это новый проект, добавьте эти два флага в Gradle.propeties

android.enableJetifier=true
android.useAndroidX=true

для более подробных шагов https://developer.android.com/jetpack/androidx или проверьте это Что такое AndroidX

Ответ 19

Посмотрите это изображение и добавьте эту строку в свой AndroidManifest.xml Android

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

enter image description here

Ответ 20

Создайте новый проект и сравните файлы build.gradle и замените все

implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.1'

и другие зависимости, аналогичные тем, которые были в новом проекте, подобном этому

implementation 'androidx.appcompat:appcompat:1.0.0-alpha3'

implementation 'androidx.constraintlayout:constraintlayout:1.1.2'

implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0-alpha1'

androidTestImplementation 'androidx.test:runner:1.1.0-alpha3'

androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha3'

implementation 'androidx.core:core-ktx:1.0.0-alpha3'

А затем фиксированный импорт для использования androidx в файлах kotlin.

Ответ 21

Добавьте эти строки внутрь файла AndroidManifest.xml.

tools:replace="android:appComponentFactory"

android:appComponentFactory="whateverString"

Ответ 22

  • Перейти к Refactor (изображение)
  • Нажмите Мигрировать на AndroidX. это работает
  • это работает.

Ответ 23

У меня была такая же проблема в течение трех дней.

Как будто Android хочет, чтобы мы использовали Kotlin или AndroidX, они покончили с Android.

Но так я это решил.

  • Я перенес свой проект в AndroidX. Это не приводит к ошибкам, связанным с рассматриваемой проблемой, соответственно обновляет файлы. В вашем приложении не нужно изменять имя метода, класса или переменной.

NB. Вы должны использовать последние версии библиотек (файл build.grudle) в последней стабильной версии Android Studio 3.4.1.

Ответ 24

Если вы не собираетесь переходить на AndroidX, выполните следующие действия.

  1. В терминале типа gradlew app: зависимости
  2. После того, как зависимости отображаются в окне, нажмите Ctrl + f и введите androidX
  3. Вы найдете все зависимости, которые используют androidx lib для внутреннего использования. Возможно, вам придется понизить версию или использовать альтернативную для этого, чтобы убедиться, что она больше не использует androidX libs для внутреннего использования.

Ответ 25

Обязательно добавьте эту строку в тег манифеста

xmlns:tools="https://schemas.android.com/tools"

Затем добавьте инструменты, которые вы замените в студии Android.

Ответ 26

я переключился (реализация 'com.android.support:appcompat-v7:28.0.0') на v7: 28.0.0, это работает для меня.

Ответ 27

У меня была такая же ошибка при работе с Groupie (реализация 'com.xwray: groupie: 2.3.0')

Я решил это, изменив версию на (реализация 'com.xwray: groupie: 2.1.0')

Ответ 28

В моём случае я не хотел переходить на androidX. И я должен проверить мои последние изменения. Я понял, что новый компонент был → lottie 2.8.0, поэтому я понизил его до: реализация 'com.airbnb.android:lottie:2.7.0'

Я надеюсь, что это может кому-то помочь.

Ответ 29

Измените proguardFile в build.gradle(Module: app) на следующий

proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

вместо

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

Это сработало для меня

Ответ 30

Для решения этой проблемы я бы рекомендовал явно android/build.gradle версию переменных ext в android/build.gradle в вашем корневом проекте.

ext {
    googlePlayServicesVersion = "16.1.0" // default: "+"
    firebaseVersion = "15.0.2" // default: "+"

    // Other settings
    compileSdkVersion = <Your compile SDK version> // default: 23
    buildToolsVersion = "<Your build tools version>" // default: "23.0.1"
    targetSdkVersion = <Your target SDK version> // default: 23
    supportLibVersion = "<Your support lib version>" // default: 23.1.1
}

ссылка https://github.com/zo0r/react-native-push-notification/issues/1109#issuecomment-506414941