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" .__
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
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.
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
)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
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
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
fügen Sie einfach diese beiden Codezeilen zu Ihrer Manifest-Datei hinzu
tools:replace="Android:appComponentFactory"
Android:appComponentFactory="whateverString"
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'
}
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.
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.
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?
Folge diesen Schritten:
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.
Gehen Sie zu Refactor-> Migrieren-> Zu Android X migrieren.
Bitte fügen Sie dies zu Ihrer gradle.properties-Datei hinzu: Android.enableJetifier = true Android.useAndroidX = true
Und führen Sie die Synchronisierung durch.
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'
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.
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.
Fügen Sie diese Zeilen in die Datei AndroidManifest.xml ein.
tools: replace = "Android: appComponentFactory" Android: appComponentFactory = "whateverString"
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.
Wenn Sie nicht beabsichtigen, auf AndroidX zu migrieren, führen Sie die folgenden Schritte aus
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
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').
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">
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
Ä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