wake-up-neo.com

Android Material und Appcompat Manifest Fusion fehlgeschlagen

Ich habe die nächste Klasse 

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

Wenn ich jedoch eine App erstellen möchte, bekomme ich das nächste Protokoll:

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.

Okey! Gehe zum Manifest und mach es:

<?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>

Dann erhalte ich diese Fehlermeldung in meinem Logcat:

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

Ändern Sie einfach "rc01" in der ersten und letzten Zeile in Abhängigkeiten in "alpha1" .__

5
Anubhav Gupta

Ich hatte ein ähnliches Problem. Zwei Zeilen in gradle.properties-Datei hinzugefügt:

Android.useAndroidX=true
Android.enableJetifier=true

Diese beiden Zeilen lösten automatisch meine Abhängigkeitskonflikte zwischen Google-Dateien und Abhängigkeiten von Drittanbietern. Hier der folgende Link: https://developer.Android.com/topic/libraries/support-library/androidx-overview#new-project

68
Abir Hasan

Ich habe denselben Fehler festgestellt, als ich versuche, die Kotlin-KTX-Bibliothek zu meinem Projekt hinzuzufügen.

Ich versuche die AndroidX-Migration und das Problem wurde behoben!

 Refactor/Migrate to AndroidX

35
Mete

Einfache Lösungen - Migrieren Sie nach AndroidX

fügen Sie im gradle.properties einfach die folgenden zwei Skripte hinzu

Android.useAndroidX=true
Android.enableJetifier=true

Was war der Grund ↓

Alle Pakete in AndroidX leben in einem konsistenten Namespace, der mit dem String androidx beginnt. Die Support Library-Pakete wurden den entsprechenden androidx. * -Paketen zugeordnet. Eine vollständige Zuordnung aller alten Klassen und Build-Artefakte zu den neuen finden Sie auf der Seite Paket-Refactoring.

Siehe die Seite zum Umgestalten von Paketen

22
E J Chathuranga

Grund des Scheiterns

Sie verwenden eine Materialbibliothek, die Bestandteil von AndroidX .. ist. Wenn Sie AndroidX nicht kennen, gehen Sie bitte durch diese Antwort .

Eine App sollte entweder AndroidX oder alte Android-Support-Bibliotheken verwenden. Deshalb haben Sie sich mit diesem Problem konfrontiert.

Zum Beispiel -

In deinem Schulabschluss verwendest du

  • com.Android.support:appcompat-v7 (Teil der alten Android-Support-Bibliothek--)
  • com.google.Android.material:material (Teil von AndroidX) (AndroidX-Build-Artefakt von com.Android.support:design)

Lösung

Die Lösung besteht also darin, entweder AndroidX oder die alte Support Library zu verwenden. Ich empfehle die Verwendung von AndroidX, da Android die unterstützten Bibliotheken nach Version 28.0.0 nicht aktualisiert. Siehe Versionshinweise der Support Library.

Einfach auf AndroidX migrieren. Hier ist meine ausführliche Antwort zur Migration auf AndroidX. Ich füge hier die notwendigen Schritte von dieser Antwort ein.

Vor der Migration wird dringend empfohlen, ein Projekt zu sichern.

Bestehendes Projekt

  • Android Studio> Menü Refactor> Zu AndroidX migrieren ...
  • Es wird analysiert und das Refraktor-Fenster unten geöffnet. Akzeptieren Sie die zu erledigenden Änderungen. 

 image

Neues Projekt

Setzen Sie diese Flags in Ihren gradle.properties

Android.enableJetifier=true
Android.useAndroidX=true

Überprüfen Sie @ Bibliothekszuordnungen für gleiches AndroidX-Paket .

Check @ Offizielle Seite von Migrate zu AndroidX

Was ist Jetifier?

9
Khemraj

Ab Android P wurden die Support-Bibliotheken nach AndroidX verschoben.

Bitte machen Sie einen Refactor für Ihre libs von dieser Seite .

https://developer.Android.com/topic/libraries/support-library/refactor

8
mughil

fügen Sie einfach diese beiden Codezeilen zu Ihrer Manifest-Datei hinzu

tools:replace="Android:appComponentFactory"
Android:appComponentFactory="whateverString"
7
Manoj Alwis

Entfernen Sie einfach die Android.support-Abhängigkeit

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

Zitieren aus Materialrichtlinien

Wenn Sie noch nicht auf die neuen Pakete androidx und com.google.Android.material umstellen möchten, können Sie Materialkomponenten über die Abhängigkeit com.Android.support:design:28.0.0-alpha3 verwenden.

Hinweis: Sie sollten die Abhängigkeiten com.Android.support und com.google.Android.de nicht gleichzeitig in Ihrer App verwenden.

Das Entfernen dieser Abhängigkeit funktioniert gut

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

Hier ist ein Beispiel für vollständige Abhängigkeiten

    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'
   }
6
Arfat Binkileb

Schließlich wurde eine schnelle und einfache Lösung gefunden, indem der Datei Android/build.gradle zwei Zeilen hinzugefügt wurden.

googlePlayServicesVersion = "16.+"

firebaseVersion = "17.6.0"

Bitte befolgen Sie diese 100% korrekt.

5
Manoj Alwis

In meinem Fall funktioniert das einwandfrei .. Ich habe in der Manifestdatei zwei Zeilencodes hinzugefügt

tools:replace="Android:appComponentFactory"
Android:appComponentFactory="whateverString"

 Manifest file Example

4
Muhaiminurabir

Ich habe nur die Option "Refactor" im oberen Menü aufgerufen.

Wählen Sie dann "Auf AndroidX migrieren"

Akzeptieren Sie, um das Projekt als Zip-Datei zu speichern.

Bitte aktualisieren Sie Android Studio sowie Gradle, um sicherzustellen, dass keine Probleme auftreten.

3
d4rkcon

Migrieren Sie zu AndroidX, wenn es sich um ein vorhandenes Projekt handelt. Wenn es sich um ein neues Projekt handelt, fügen Sie diese beiden Flags zu Gradle.propeties hinzu

Android.enableJetifier = true
Android.useAndroidX = true

weitere Informationen finden Sie unter https://developer.Android.com/jetpack/androidx oder unter Was ist AndroidX?

3
trustidkid

Folge diesen Schritten: 

  • Gehen Sie zu Refactor und klicken Sie auf Zu AndroidX migrieren
  • Klicken Sie auf "Umgestalten"
3
BloodLoss

Erstellen Sie ein neues Projekt, vergleichen Sie Ihre build.gradle-Dateien und ersetzen Sie alle Dateien

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

und andere Abhängigkeiten mit den gleichen wie in einem neuen Projekt Etwas davon

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'

Danach wurden Importe korrigiert, um androidx in Kotlin-Dateien zu verwenden.

  1. Gehen Sie zu Refactor-> Migrieren-> Zu Android X migrieren.

  2. Bitte fügen Sie dies zu Ihrer gradle.properties-Datei hinzu: Android.enableJetifier = true Android.useAndroidX = true

Und führen Sie die Synchronisierung durch.

2
Girish B.R
  • Gehe zu Refactor ( Image )
  • Klicken Sie auf Zu AndroidX migrieren. es funktioniert
  • es funktioniert.
2
Aydın Üzmez

Ich stand vor diesem seltsamen Käfer, der zwei Stunden dauerte. Ich habe diesen Fehler mit diesen Schritten behoben

Ändern Sie Ihre build.gradle-Abhängigkeiten in

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

zu

  implementation 'com.google.Android.gms:play-services-maps:15.0.0'
2
Kashif Ahmed

Ich hatte drei Tage lang das gleiche Problem.

Es ist so, als ob Android möchte, dass wir entweder Kotlin oder AndroidX verwenden, sie beseitigen Android.

Aber so habe ich es gelöst.

  • Ich habe mein Projekt auf AndroidX migriert. Dies führt zu keinen Fehlern im Zusammenhang mit diesem Problem. Es werden jeweils Dateien aktualisiert. In Ihrer Anwendung müssen keine Methoden-, Klassen- oder Variablennamen geändert werden.

Hinweis: Sie müssen die neuesten Bibliotheken (build.grudle-Datei) in der neuesten stabilen Version von Android studio 3.4.1 verwenden

Nur wenn Sie androidx nicht verwenden wollen

In meinem Fall verwende ich also die Bibliothek, die androidx verwendet hat, aber ich verwende nicht androidx. Wenn ich also die Bibliotheksversion heruntergestuft habe, ist das Problem gelöst.

In meinem Fall:

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

die oben erwähnte Bibliothek macht das Problem 13. + erhält automatisch eine neue Version, die androidx verwendet. Also habe ich die Bibliotheksversion heruntergestuft auf:

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

Und mein Problem wurde gelöst.

1
Suraj Vaishnav

Fügen Sie diese Zeilen in die Datei AndroidManifest.xml ein.

tools: replace = "Android: appComponentFactory" Android: appComponentFactory = "whateverString"

1
Ajay

Dieses Problem trat hauptsächlich bei alten Abhängigkeiten auf.

Es gibt 2 Lösungen:

Erster:

Aktualisieren Sie alle old dependencies- und ClassPaths from Project level gradle -Dateien.

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

Der zweite:

Ihr Projekt Migrate to AndroidX

Aus dem Android Studio-Menü -> Refanctor -> Migrate to AndroidX

Danke, lass es mich wissen, wenn jemand von dieser Antwort hilft.

1
Hasib Akter

Dieses Bild anzeigen und diese Zeile in der Datei Android AndroidManifest.xml hinzufügen

tools:replace="Android:appComponentFactory"
Android:appComponentFactory="whateverString"

enter image description here

1
Prashant Arvind

Wenn Sie nicht beabsichtigen, auf AndroidX zu migrieren, führen Sie die folgenden Schritte aus

  1. Im Terminaltyp gradlew app: Abhängigkeiten
  2. Nachdem die Abhängigkeiten im Fenster angezeigt werden, drücken Sie Strg + F und geben Sie androidX ein
  3. Sie werden alle Abhängigkeiten finden, die androidx lib intern verwenden. Möglicherweise müssen Sie das downgraden oder eine Alternative dafür verwenden, um sicherzustellen, dass androidX libs nicht mehr intern verwendet wird.
1
Swapnil

Stellen Sie zunächst sicher, dass Sie diese Zeile in manifest tag einfügen.

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

Dann fügen Sie Tools hinzu, um Ihre vorgeschlagene in Android Studio zu ersetzen

0

Ich hatte den gleichen Fehler bei der Arbeit mit Groupie (Implementierung 'com.xwray: groupie: 2.3.0')

Ich habe es gelöst, indem ich die Version geändert habe (Implementierung 'com.xwray: groupie: 2.1.0').

0
atilganhaci

In manchen Fällen wollte ich nicht auf AndroidX umsteigen. Und ich muss meine letzten Änderungen überprüfen. Ich finde heraus, dass die neue Komponente -> Lottie 2.8.0 war. Also stufe ich sie herunter auf: Implementierung 'com.airbnb.Android:lottie:2.7.0'

Ich hoffe, dass dies jemandem helfen kann.

1. Fügen Sie diese Codes am Ende Ihrer App/build.gradle hinzu:

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

2.Modified SDK und Tools-Version auf 28:

compileSdkVersion 28
buildToolsVersion '28.0.3'
targetSdkVersion  28

3.In Ihrer AndroidManifest.xml-Datei sollten Sie zwei Zeilen hinzufügen:

<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">
0
Attaullah

Um dieses Problem zu lösen, würde ich empfehlen, die Version für die ext-Variablen unter Android/build.gradle in Ihrem Root-Projekt explizit zu definieren

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
}

referenz https://github.com/zo0r/react-native-Push-notification/issues/1109#issuecomment-506414941

0
Govan

Ändern Sie proguardFile in build.gradle (Module: app) wie folgt

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

anstatt

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

Das hat bei mir funktioniert

0
David Wanjohi