11

mam zaktualizowaniu aplikacji przynieść wsparcie materiał tematyczny (moja aplikacja korzysta z Google Play)AppCompat-v7: 21.0.0 nie współpracuje z Google Play, usługa 6.1+

Kiedy synchronizować mój projekt, to pojawił się :

...\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 

Moi Gradle zależności:

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 

Jeśli wykluczyć AppCompat-v7 następnie projekt kompiluje bez błędów.

Czy byłem zbyt podekscytowany lollipopem i nie czytałem poprawnie dokumentów? Jak mogę to naprawić?

część skryptu build:

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 
} 

lokalne repozytorium Google wygląda następująco: enter image description here

+1

spróbować zdefiniować zależność tak 'kompilacji 'com.google.android.gms play-usług. 6.1 +'' –

+1

Tak próbowałem, że 6,1 + postanawia 6.1.11 – tom91136

+0

mam podobny problem. z wersją 6.1.11. Narzeka on na atrybut "kolor" w pliku wallet_colors.xml, który należy do biblioteki usług Play –

Odpowiedz

20

@igavran odpowiedzieć punktów we właściwym kierunku, ale chciałem dać bardziej wyczerpującej odpowiedzi, więc nie jest on:

Gradle Resource Merger scala wszystkie foldery zasobów ze wszystkich uzależnień i umieścić w jednym folderze. W przypadku duplikatów proces kompilacji nie powiedzie się.

Z jakiegoś dziwnego powodu Android Studio wskazuje na wallet_colors.xml biblioteki Usług Google Play w oknie Wiadomości. Usługa Google Play nie ma nic wspólnego z tym problemem. Na szczęście, jeśli spojrzysz poniżej pod etykietą Output:, znajdziesz właściwą ścieżkę do problemu, np.

Screenshoot from Android Studio

Można też zbudować swój projekt z linii poleceń i uzyskać właściwą drogę.

Wewnątrz values.xml plik w linii 172 (w przypadku innej linii) byś znaleźć <declare-styleable> z właściwość o nazwie „kolor” („showText” w danym przypadku). Najprawdopodobniej jest to twój własny styl, który musisz zmienić, aby pozbyć się duplikatu.

Teraz, gdy znasz przyczynę, możesz zlokalizować tę właściwość w module projektu i zastąpić ją inną nazwą. Przypuszczam, że będzie on znajdować się wewnątrz pliku /values/attrs.xml.

+0

Najdziwniejsze jest to, że '' definiuje zakres atrybutów, więc nie powinien zderzają się, w moim przypadku był to 'CursorAdapter_layout' (mój) VS' SearchView_layout' (wsparcie). Czy sądzisz, że jest tu głębszy błąd, czy tylko wsparcie dla wprowadzających nowe attrs złamie inne aplikacje teraz iw przyszłości? – TWiStErRob

+1

Myślę, że to drugie. Zmusi nas to do określenia unikalnych nazw naszych atrybutów, może jest w porządku. Z drugiej strony wygląda na to, że Google nie przewidywał fuzji, której dotyczyła fuzja. Chyba będziemy musieli ich zapytać. –

+0

@DamianPetla, jesteś po prostu niesamowita ..... wielkie dzięki ... zaoszczędzisz mi dużo czasu. – TNR

5

Spędziłem ostatnie dwie godziny w tej samej sprawie, w moim przypadku problemem było to, że nie zdefiniowano mój własny atrybut "showText" (w res/values ​​/ attrs.xml), który był w kolizji z atrybutem zdefiniowanym w <declare-styleable name="SwitchCompat">.

Ten problem nie występuje podczas używania appcompat-v7: 20, ale kompilacja appcompat-v7: 21 kończy się niepowodzeniem.

+0

Wciąż się nie udaje appcompat-v7: 22.0.0 –

1

Nie używaj całych usługi grać jak to następujący przykład 1

Przykład 1: kompilacji „com.google.android.gms play-usługi: 7.5.0 '

Skorzystaj z usług, z których chcesz korzystać w swojej aplikacji. Na przykład, jeśli chcesz skorzystać z usługi Google+ niż użytku w następujący przykład 2

Przykład 2: kompilacja „com.google.android.gms: Play-usługi-plus: 7.5.0”

więcej usług wizyty : Setting Up Google Play Services