2014-06-27 16 views
5

Ich habe Probleme mit manifester Fusion mit duplizierten Empfängern, aber der Inhalt ist anders. Ich benutze die folgenden Empfänger für verschiedene API-Ebenen, hatte bis zur Fusion bisher kein Problem. Build fehlschlägt Fusion durch die sagtAndroid Manifest Merger schlägt fehl für Empfänger mit demselben Namen aber unterschiedlichen Inhalt

Element receiver#.receivers.UpdateReceiver duplicated with element declared at AndroidManifest.xml:124:9 

Ich will nicht einen anderen Empfänger erstellen und mit diesem Schema weiter. Gibt es eine Möglichkeit, die Fusion für diese Situationen zu deaktivieren oder die Empfänger in einem zusammenzuführen, aber mit der Option, Aktionen mit unterschiedlichen Absichten zu ermöglichen?

<receiver 
    android:name=".receivers.UpdateReceiver" 
    android:enabled="@bool/is_api_below_12"> 
    <intent-filter> 
     <action android:name="android.intent.action.PACKAGE_REPLACED" /> 
     <data android:scheme="package" /> 
    </intent-filter> 
</receiver> 

<receiver 
    android:name=".receivers.UpdateReceiver" 
    android:enabled="@bool/is_api_12_and_above"> 
    <intent-filter> 
     <action android:name="android.intent.action.MY_PACKAGE_REPLACED" /> 
    </intent-filter> 
</receiver> 
+0

Habe es noch nie versucht, aber es sollte für 1 Empfänger-Tag zulässig sein, 2 Intent-Filter zu haben. –

+0

@GabeSechan Ich brauche 'aktiviert' Attribut, das wäre toll gewesen, wenn wir es im Intent-Filter hatten. –

+0

Genau genommen nicht - Sie können immer die erste Zeile des Empfängers haben, um zu entscheiden, ob die Absicht zu verarbeiten ist oder nicht, und zu beenden, wenn nicht. Enabled ist nur eine schönere Art, es zu tun. –

Antwort

1

vielleicht können Sie

gesetzt
android { 
    useOldManifestMerger true 
} 

in Ihrer build.gradle Datei und das funktionierte in meinem Projekt feinen Sie mehr Details sehen here

+0

leider brauche ich Manifest zusammenführen, da ich Platzhalter verwenden. –

+4

Von [der Dokumentation] (http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger): ** In 1.0 haben wir die Möglichkeit, das alte Manifest aufzurufen, entfernt Zusammenschluss**. – cprcrack

+0

Wie nutzen Sie die neue Fusion? Ich habe versucht, dies zu lesen: http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger, aber es ist so komplex und verwirrend ... –

1

Sie finden, wie ich Behebung des gleichen Problems in this answer. Im Grunde habe ich eine andere Klasse erstellt, aber ich habe sie zu einer statischen inneren Klasse gemacht, um zu vermeiden, dass eine andere Datei für eine gemeinsame Aktion erstellt wird.

Verwandte Themen