22

I am using Android studio for building application. I am using this following dependencies:

  1. play services : compile 'com.google.android.gms:play-services:5.2.08'
  2. app combat v7 : compile 'com.android.support:appcompat-v7:21.0.0'
  3. support Cardview : compile 'com.android.support:cardview-v7:21.0.0'
  4. support Recycler view : compile 'com.android.support:recyclerview-v7:21.0.0'

I am getting following error while building my app:

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

Code Styles.xml

<resources>

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

</resources>

Code 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>
Coder
  • 845
  • 1
  • 10
  • 20
  • plz post the code of your wallet_attrs.xml file and your styles.xml that is inside values folder – Hirak Chhatbar Oct 24 '14 at 10:53
  • edited the question above – Coder Oct 24 '14 at 10:57
  • 5
    try upgrading your google play services dependency to this 'com.google.android.gms:play-services:6.1.+' – Hirak Chhatbar Oct 24 '14 at 11:02
  • 3
    then make sure all ur build-tools and support-tools in SDK manager are up to date or note. bcoz ur xms files seems to have no issue. the problem is with library. so update everything in ur sdk manager as well as gms service dependency as mentioned above – Hirak Chhatbar Oct 24 '14 at 11:03

5 Answers5

41

just use latest (21)
appCompat and
google play services library

For example:

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'

then everything works :)

Jared Burrows
  • 54,294
  • 25
  • 151
  • 185
cV2
  • 5,229
  • 3
  • 43
  • 53
11

Just check, whether you have a file named attrs.xml. In that file replace the following line

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

with

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

That is, rename the theme name. Now clean the project. This solved my issue.

Opal
  • 81,889
  • 28
  • 189
  • 210
codeX
  • 4,842
  • 2
  • 31
  • 36
2

I had the same issue developing in Eclipse after updating content via the SDK manager.

I had to completely remove the Google Play Services library from the Workspace and then copy and import the updated version following the instructions here.

No updating of the referenced jars helped me - Only a full fresh import. This included updating the android-support-v7-appcompat import.

brandall
  • 6,094
  • 4
  • 49
  • 103
0

If you want to keep supporting older android versions (2.3.x, 3.x.x, 4.0) use a modified version of your library removing wallet classes and resources (given that you don't need wallet functionality.) That avoids this "theme" attr problem. I am using play-services-5.0.89.arr with no problem.

In particular, remove com.google.android.gms.wallet.* classes and wallet_*.xml resources and you are done.

Adam Michalik
  • 9,678
  • 13
  • 71
  • 102
-3

Thanks Hirak as you mentioned the error was with dependency. solved it using following versions of library:

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'
Coder
  • 845
  • 1
  • 10
  • 20