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