Ich bin dabei, meine aktuelle Projekte in Android Studio und Gradle zu verschieben. Ich bin derzeit bei dem folgenden Thema festgefahren:
Error:(87, 9) Execution failed for task ':App:processDebugManifest'.
> Manifest merger failed : Attribute [email protected] value=(@string/app_label) from AndroidManifest.xml:87:9
is also present at Android_APPLICATION:Library:unspecified:9:18 value=(@string/app_name)
Suggestion: add 'tools:replace="Android:label"' to <application> element at AndroidManifest.xml:82:5 to override
Ich habe versucht, die folgenden Attribute zur Hauptdatei AndroidManifest.xml
hinzuzufügen:
tools:replace="Android:label, *App Name*"
tools:replace="Android:label, @string/app_label"
tools:replace="Android:label"
Keine dieser Attributdefinitionen funktioniert. Was mache ich falsch?
Probieren Sie es aus:
Fügen Sie dies zu <manifest/>
hinzu
xmlns:tools="http://schemas.Android.com/tools"
Fügen Sie dies zu <application/>
hinzu
tools:node="replace"
Basierend auf this sollte es alle Elemente überschreiben. "Ersetzen Sie die Deklaration mit niedrigerer Priorität durch die kommentierte."
Beim Zusammenführen der Manifestdateien besteht ein Konflikt mit dem Attribut label
.
Im Allgemeinen gibt es es gibt drei Typen von Manifestdateien, die in einem einzigen resultierenden App-Manifest zusammengefügt werden müssen, hier in der Reihenfolge der Priorität:
Der Konflikt kann auf zwei Arten gelöst werden:
Entfernen Sie das in Konflikt stehende Attribut aus der Bibliotheksmanifestdatei (oder einer untergeordneten Ebene).
In diesem Fall hat Android_APPLICATION:Library:unspecified:9:18 value=(@string/app_name)
einen definierten @string/app_name
-Wert, der sich von dem in der Hauptanwendung unterscheidet. Wenn dies nicht erforderlich ist, entfernen Sie es. Entfernen Sie einfach den Android:label="@string/app_name"
aus der AndroidManifest.xml
-Datei der Bibliotheksdatei.
Es gibt mehrere spezielle Attributmarkierungen (im Namensraum der Tools), die verwendet werden können, um eine bestimmte Entscheidung für die Konfliktlösung auszudrücken.
In diesem Fall fügen Sie die Android:label
-Definition zum xmlns:tools="http://schemas.Android.com/tools"
-Knoten und <manifest>
zum tools:replace="label"
-Knoten hinzu, um den <application>
der Hauptanwendung explizit zu veranlassen, alle anderen Anwendungsetiketten (z. B. Bibliotheksdatei) zu überschreiben.
Hier ein Beispiel - verwenden Sie dies in der AndroidManifest.xml
-Datei der Hauptanwendung:
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.mycompany.myapp"
xmlns:tools="http://schemas.Android.com/tools">
<application
Android:label="@string/app_name"
tools:replace="label"/>
</manifest>
Dieser Ansatz würde auch mit anderen widersprüchlichen Attributen funktionieren. Wenn sich beispielsweise auch das icon
-Attribut in Konflikt befindet, kann es in tools:replace="label, icon"
geändert werden.
Wenn Sie Glück hatten, wie ich es war, können Sie das Problem manuell mit einer hacky work-around beheben.
AAR-Dateien sind nur ZIP-Dateien mit der Erweiterung .aar. In meinem Fall habe ich die .aar-Datei entpackt, den anstößigen Android:label
aus dem AndroidManifest.xml
der Bibliothek entfernt und dann die restlichen Dateien mit der Erweiterung .aar umsortiert, und alles scheint perfekt mit der neuen .aar-Datei zu funktionieren.
Zu Ihrer Information, dies scheint ein bekannter Fehler im Android Gradle Plugin zu sein .
Ich habe das gleiche Problem behoben. Lösung für mich:
xmlns:tools="http://schemas.Android.com/tools"
-Zeile im Manifest-Tag hinzutools:replace=..
im Manifest-Tag hinzuAndroid:label=...
im Manifest-Tag verschiebenIch stand auch vor denselben Problemen und fand nach langen Recherchen die Lösung
- ihre min sdk-Version sollte mit der der von Ihnen verwendeten Module übereinstimmen Beispiel: Ihr Modul min sdk Version ist 14 und Ihre app min sdk Version ist 9 Es sollte gleich sein.
- Wenn Build-Version Ihrer App und Module nicht identisch sind. Wieder sollte es dasselbe sein
Kurz gesagt, Ihre Build-Grad.-Datei und das Manifest Ihrer App sollten die gleichen Konfigurationen haben.
- Es gibt kein Duplikat wie die gleichen Berechtigungen, die zweimal in der Manifestdatei hinzugefügt wurden. Dieselbe Aktivität wird zweimal erwähnt
- Wenn Sie eine Aktivität aus Ihrem Projekt löschen, löschen Sie diese ebenfalls aus Ihrer Manifestdatei
- Manchmal ist es aufgrund von Label, Symbol usw. der Manifestdatei a) Fügen Sie die Zeile xmlns: tools im Manifest-Tag .__ hinzu. b) Werkzeuge hinzufügen: Ersetzen = oder Werkzeuge: Ignorieren = im Anwendungs-Tag Beispiel
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.slinfy.ikharelimiteduk"
xmlns:tools="http://schemas.Android.com/tools"
Android:versionCode="1"
Android:versionName="1.0" >
<application
tools:replace="icon, label"
Android:label="myApp"
Android:name="com.example.MyApplication"
Android:allowBackup="true"
Android:hardwareAccelerated="false"
Android:icon="@drawable/ic_launcher"
Android:theme="@style/Theme.AppCompat" >
</application>
</manifest>
Wenn Sie diese Punkte im Hinterkopf behalten, werden Sie dieses Problem mit der Manifestierung der Zusammenlegung fehlschlagen. __ Überprüfen Sie meinen Beitrag: Dieses Problem wurde aufgrund eines Problems in der Manifest- oder Build.gradle-Datei erstellt. Sie können meinen Beitrag überprüfen https://wordpress.com/post/dhingrakimmi.wordpress.com/23
Ich habe gerade entfernt
Android:label="@string/app_name
aus dem manifest file
und es hat funktioniert!