11

Ich bin Aktualisierung meiner app Material Theme-Unterstützung (meine App nutzt Google Play-Dienste)appcompat-v7: 21.0.0 nicht mit google Arbeitsdienst spielen 6.1+

Wenn ich synchronisieren mein Projekt zu bringen, zeigte dies auf :

...\app\build\intermediates\exploded-aar\com.google.android.gms\play-services\6.1.11\res\values\wallet_colors.xml 

Error:Attribute "showText" has already been defined 

Meine gradle Abhängigkeiten:

compile 'com.android.support:appcompat-v7:21.0.0' 
compile 'com.google.android.gms:play-services:6.1.11' 
// the latest version of play-services is 6.1.11 

Wenn ich appcompat-v7 dann das Projekt ohne Fehler kompiliert auszuschließen.

Bin ich zu aufgeregt über Lollipop und habe die Dokumente nicht richtig gelesen? Wie kann ich das beheben?

Ein Teil des Build-Skript:

compileSdkVersion 21 
buildToolsVersion '21.0.1' 
dexOptions { 
    preDexLibraries true 
    //incremental true 
} 
defaultConfig { 
    minSdkVersion 14 
    targetSdkVersion 21 
    versionCode 11 
    versionName '1.0' 
    renderscriptTargetApi 21 
    renderscriptSupportMode true 
} 
compileOptions { 
    sourceCompatibility JavaVersion.VERSION_1_7 
    targetCompatibility JavaVersion.VERSION_1_7 
} 

Lokale Google-Repository wie folgt aussieht: enter image description here

+1

Try Abhängigkeit wie diese 'kompiliert 'com.google.android.gms: Play-Dienste. 6.1 +' definieren' –

+1

Ja habe ich versucht, 6.1 + bis 6.1.11 – tom91136

+0

ich habe ähnliches Problem behebt. mit Version 6.1.11. Es beschwert sich über "Farbe" Attribut in wallet_colors.xml, die Play Services-Bibliothek gehört –

Antwort

20

@igavran Punkte in der richtigen Richtung beantworten, aber ich wollte mehr umfassende Antwort geben, ist es so gibt es:

Gradle Resource Merger alle Ressourcenordner aus allen Abhängigkeiten aufnehmen und in einzelne Ordner übergeht. Falls es Duplikate gibt, wird der Build-Prozess fehlschlagen.

Aus irgendeinem seltsamen Grund verweist Android Studio im Nachrichtenfenster auf die wallet_colors.xml der Google Play Service-Bibliothek. Der Google Play-Dienst hat nichts mit diesem Problem zu tun. Zum Glück, wenn Sie unter Ausgabe suchen: Etikett, finden Sie den richtigen Weg zum Problem, z.

Screenshoot from Android Studio

Sie können auch Ihr Projekt von der Kommandozeile und erhalten den richtigen Weg bauen.

Innen values.xml Datei in Zeile 172 (in Ihrem Fall andere Linie) Sie <declare-styleable> mit Eigenschaft "Farbe" genannt ("Show" in Ihrem Fall) finden würden. Höchstwahrscheinlich ist es Ihre eigene styleable, die Sie ändern müssen, um das Duplikat loszuwerden.

Wenn Sie nun den Grund kennen, können Sie diese Eigenschaft in Ihrem Projektmodul suchen und durch einen anderen Namen ersetzen. Ich denke, es wird innerhalb /values/attrs.xml Datei befinden.

+0

Das Seltsame hier ist, dass '' definiert einen Bereich für Attribute, so sollte es nicht kollidieren, in meinem Fall war es 'CursorAdapter_layout' (mein) VS' SearchView_layout' (Unterstützung). Denkst du, dass es hier einen tieferen Fehler gibt, oder nur die Unterstützung lib, die neue Attraktoren einführt, wird andere Apps jetzt und in Zukunft brechen? – TWiStErRob

+1

Ich denke, es ist das letztere. Es wird uns zwingen, eindeutige Namen für unsere Attribute anzugeben, vielleicht ist es in Ordnung. Auf der anderen Seite sieht es wie eine Nebenwirkung der Fusion aus, die Google nicht vorhersagte. Ich denke, wir müssten sie fragen. –

+0

@DamianPetla, du bist einfach toll ..... vielen Dank .... spart viel Zeit für mich. – TNR

5

ich letzten zwei Stunden auf dem gleichen Problem und in meinem Fall das Problem ausgegeben wurde, dass ich definiert hatte mein eigenes Attribut "showText" (in res/values ​​/ attrs.xml), das mit dem in <declare-styleable name="SwitchCompat"> definierten Attribut kollidierte.

Dieses Problem besteht nicht bei Verwendung von appcompat-v7: 20, aber mit appcompat-v7: 21 Build schlägt fehl.

+0

Noch schlägt appcompat-v7: 22.0.0 –

1

Verwenden Sie die ganzen Play-Dienste nicht wie dieses folgenden Beispiel 1

Beispiel 1: kompilieren ‚com.google.android.gms: Play-Service: 7,5.0 '

Verwenden Sie die Dienste, die Sie in Ihrer Anwendung verwenden möchten. Zum Beispiel, wenn Sie Google+ Dienst als Verwendung als folgendes Beispiel 2

Beispiel 2 zu verwenden: kompilieren ‚com.google.android.gms: Play-Dienste-plus: 7.5.0‘

für weitere Dienste Besuch : Setting Up Google Play Services