Appcompat-v7: 21.0.0 не работает с сервисом google play 6.1+

Я обновляю свое приложение для поддержки материальной темы (мое приложение использует Службы Google Play)

Когда я синхронизирую свой проект, это показало:

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

Мои gradle зависимости:

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

Если я исключаю appcompat-v7, тогда проект компилируется без ошибок.

Я слишком волновался о леденец и не читал документы правильно? Как я могу это исправить?

Часть сборки script:

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
}

Локальный репозиторий Google выглядит следующим образом: enter image description here

Ответ 1

Ответы @igavran указывают на правильное направление, но я хотел дать более полный ответ, так что это:

Gradle Слияние ресурсов объединяет все папки ресурсов из всех зависимостей и помещается в одну папку. В случае, если процесс создания дубликатов будет терпеть неудачу.

По какой-то странной причине Android Studio указывает на файл wallet_colors.xml библиотеки Службы Google Play в окне "Сообщения". Служба Google Play не имеет ничего общего с этой проблемой. К счастью, если вы посмотрите ниже в методе Output: label, вы найдете правильный путь к проблеме, например.

Screenshoot from Android Studio

Вы также можете создать свой проект из командной строки и получить правильный путь.

Внутри файла values.xml в строке 172 (в вашем случае другая строка) вы найдете <declare-styleable> с свойством с именем "color" ( "showText" в вашем случае). Скорее всего, это ваш собственный стиль, который вы должны изменить, чтобы избавиться от дубликата.

Итак, теперь, когда вы знаете причину, вы можете найти это свойство в своем проектном модуле и заменить его другим именем. Я предполагаю, что он будет находиться внутри файла/values/attrs.xml.

Ответ 2

Я провел последние два часа по одной и той же проблеме, и в моем случае проблема заключалась в том, что я определил свой собственный атрибут "showText" (в res/values ​​/attrs.xml), который находился в столкновении с атрибутом, определенным в <declare-styleable name="SwitchCompat">.

Эта проблема не существует при использовании appcompat-v7: 20, но с ошибкой сборки appcompat-v7: 21.

Ответ 3

Не используйте все игровые сервисы, как показано в следующем примере 1

Пример 1: компиляция 'com.google.android.gms: play-services: 7.5.0'

Используйте те службы, которые вы хотите использовать в своем приложении. Например, если вы хотите использовать службу Google+, чем использовать в качестве примера 2

Пример 2: компиляция 'com.google.android.gms: play-services-plus: 7.5.0'

для получения дополнительных услуг: Настройка сервисов Google Play