22

Я использую Android-студию для создания приложения. Я использую это следующие зависимости:Ошибка: Атрибут «тема» уже определен

  1. игровые услуги: compile 'com.google.android.gms:play-services:5.2.08'
  2. приложение боевой v7: compile 'com.android.support:appcompat-v7:21.0.0'
  3. поддержка Cardview: compile 'com.android.support:cardview-v7:21.0.0'
  4. вид поддержки ресайклинга: compile 'com.android.support:recyclerview-v7:21.0.0'

Я получаю следующее ошибка при создании моего приложения:

app/build/intermediates/exploded-aar/com.google.android.gms/play-services/5.2.08/res/values/wallet_attrs.xml 
    Error:Attribute "theme" has already been defined 

Код styles.xml

<resources> 

    <!-- Base application theme. --> 
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
     <!-- Customize your theme here. --> 
    </style> 

</resources> 

Код wallet_attrs.xml

<?xml version="1.0" encoding="utf-8"?> 
<!-- Copyright 2014 Google Inc. All Rights Reserved. --> 
<resources> 
    <!-- Attributes for the WalletFragment &lt;fragment&gt; tag --> 
    <declare-styleable name="WalletFragmentOptions"> 
     <!-- Theme to be used for the Wallet selector --> 
     <attr name="theme" format="enum"> 
      <enum name="holo_dark" value="0"/> 
      <enum name="holo_light" value="1"/> 
     </attr> 
     <!-- Google Wallet environment to use --> 
     <attr name="environment" format="enum"> 
      <enum name="production" value="1"/> 
      <enum name="sandbox" value="0"/> 
      <enum name="strict_sandbox" value="2"/> 
     </attr> 
     <!-- A style resource specifing attributes to customize the look and feel of WalletFragment --> 
     <attr name="fragmentStyle" format="reference"/> 
     <!-- Fragment mode --> 
     <attr name="fragmentMode" format="enum"> 
      <enum name="buyButton" value="1"/> 
      <enum name="selectionDetails" value="2"/> 
     </attr> 
    </declare-styleable> 

    <!-- Attributes that may be specified in a style resource to customize the look and feel of 
     WalletFragment --> 
    <declare-styleable name="WalletFragmentStyle"> 
     <!-- Height of the buy button. This includes an 8dp padding (4dp on each side) used for 
      pressed and focused states of the button. The value can be a specific height, e.g. 
      "48dp", or special values "match_parent" and "wrap_content". --> 
     <attr name="buyButtonHeight" format="dimension"> 
      <enum name="match_parent" value="-1" /> 
      <enum name="wrap_content" value="-2" /> 
     </attr> 
     <!-- Width of the buy button. This includes an 8dp padding (4dp on each side) used for 
      pressed and focused states of the button. The value can be a specific width, e.g. 
      "300dp", or special values "match_parent" and "wrap_content". --> 
     <attr name="buyButtonWidth" format="dimension"> 
      <enum name="match_parent" value="-1" /> 
      <enum name="wrap_content" value="-2" /> 
     </attr> 
     <!-- Text on the buy button. Must be one of "buy_with_google", "buy_now" and "book_now" --> 
     <attr name="buyButtonText" format="enum"> 
      <enum name="buy_with_google" value="1"/> 
      <enum name="buy_now" value="2"/> 
      <enum name="book_now" value="3"/> 
     </attr> 
     <!-- Appearance of the buy button. Must be one of "classic", "grayscale" and "monochrome" --> 
     <attr name="buyButtonAppearance" format="enum"> 
      <enum name="classic" value="1"/> 
      <enum name="grayscale" value="2"/> 
      <enum name="monochrome" value="3"/> 
     </attr> 
     <!-- TextAppearance for masked wallet details --> 
     <attr name="maskedWalletDetailsTextAppearance" format="reference"/> 
     <!-- TextAppearance for headers describing masked wallet details --> 
     <attr name="maskedWalletDetailsHeaderTextAppearance" format="reference"/> 
     <!-- Masked wallet details background --> 
     <attr name="maskedWalletDetailsBackground" format="reference|color"/> 
     <!-- TextAppearance for the "Change" button in masked wallet details view --> 
     <attr name="maskedWalletDetailsButtonTextAppearance" format="reference"/> 
     <!-- "Change" button background in masked wallet details view --> 
     <attr name="maskedWalletDetailsButtonBackground" format="reference|color"/> 
     <!-- Color of the Google Wallet logo text in masked wallet details view --> 
     <attr name="maskedWalletDetailsLogoTextColor" format="color"/> 
     <!-- Type of the wallet logo image in masked wallet details view --> 
     <attr name="maskedWalletDetailsLogoImageType" format="enum"> 
      <enum name="classic" value="1"/> 
      <enum name="monochrome" value="2"/> 
     </attr> 
    </declare-styleable> 
</resources> 
+0

PLZ опубликовать код вашего файла wallet_attrs.xml и ваши styles.xml, который находится внутри папки значений. –

+0

отредактировал вопрос выше – ashwin1103

+5

. Попробуйте обновить зависимость ваших сервисов Google Play от этой «com.google.android.gms: play-services : 6.1. + ' –

ответ

40

просто использовать последнюю (21)
AppCompat и
сервисы Google Play библиотеки

Например:

compile 'com.android.support:support-v4:21.0.0' 
compile 'com.android.support:appcompat-v7:21.0.0' 
compile 'com.android.support:recyclerview-v7:21.0.0' 
compile 'com.android.support:cardview-v7:21.0.0' 
compile 'com.google.android.gms:play-services:6.1.11' 

то все работает :)

+0

извините, человек :) правильный, адаптирующий ответ – cV2

+0

Это не сработало для меня. – KinGPinG

+0

У меня такая же проблема в других библиотеках, оба из объявляемого стиля не дублируются, версия инструмента gradle-plugin/build 1.0.0/20.0.0 и 0.9 +/19.0.0 –

-3

Спасибо Hirak, как вы упомянули ошибка с зависимостью. решить ее, используя следующие версии библиотеки:

compile 'com.android.support:appcompat-v7:20.0.0' 
compile 'com.google.android.gms:play-services:4.+' 
compile 'com.android.support:cardview-v7:21.0.0' 
compile 'com.android.support:recyclerview-v7:21.0.0' 
+2

Это очень старая версия Служб Google Play –

+0

Да ... но она начала работать ... Я получаю сообщение об ошибке, если использую последнюю версию всех эти библиотеки. – ashwin1103

+0

Я не использовал вас, но вы должны использовать: compile 'com.google.android.gms: play-services: 6.1.11'. Зачем отвечать на этот вопрос в этом случае? –

2

Я была такая же проблема развивается в Eclipse, после обновления контента через менеджер SDK.

Мне пришлось полностью удалить библиотеку Служб Google Play из рабочей области, а затем скопировать и импортировать обновленную версию following the instructions here.

Никакое обновление упомянутых банок не помогло мне - только полный свежий импорт. Это включало обновление импорта android-support-v7-appcompat.

11

Просто проверьте, есть ли у вас файл с именем attrs.xml. В этом файле замените следующую строку

<attr name="theme" format="reference" /> 

с

<attr name="apptheme" format="reference" /> 

То есть, переименовать название темы. Теперь очистите проект. Это решило мою проблему.

+0

Переименовал его как? – Bono

+0

Я переименовал название «тема» в «apptheme» – arunprakashpj

+1

, это решение работало очень хорошо для меня! – GFPF

0

Если вы хотите поддерживать более старые версии Android (2.3.x, 3.xx, 4.0), используйте модифицированную версию вашей библиотеки, удаляя классы и ресурсы кошелька (учитывая, что вам не нужны функции кошелька.) Это позволяет избежать эта «тема» проблема attr. Я использую play-services-5.0.89.arr без проблем.

В частности, удалите com.google.android.gms.wallet.* классы и wallet_*.xml ресурсов, и все готово.