2015年1月15日木曜日

appcompat-v7:21.0.3を追加したら、Attribute定義の競合エラーが発生し、ハマった

compile 'com.android.support:appcompat-v7:21.0.3’を追加したら、以下のエラーが出た


Error:Attribute "track" has already been defined
Error:Attribute "thumbTextPadding" has already been defined
Error:Attribute "switchTextAppearance" has already been defined
Error:Attribute "switchMinWidth" has already been defined
Error:Attribute "switchPadding" has already been defined
Error:Attribute "switchStyle" has already been defined
Error:Attribute "theme" has already been defined


原因

appcompat-v7のバージョン21以降で定義されているAttributeの名称と、
org.jraf:android-switch-backport(バージョン1.3.1)や
com.google.android.gms:play-services(バージョン4.4.52)で
定義されているAttributeの名称が競合しているため


対応手順

  1. org.jraf:android-switch-backportのバージョンを1.3.1→1.4.0にアップ
  2. com.google.android.gms:play-servicesのバージョンを4.4.52→6.1.71にアップ(6.1.+ならOK)
  3. compile 'com.android.support:appcompat-v7:21.0.3’を追加



1.org.jraf:android-switch-backportのバージョンを1.3.1→1.4.0にアップ

repositories {
    jcenter()
}
 (...)
dependencies {
    compile 'org.jraf:android-switch-backport:1.4.0'
}

※buld.gradleのrepositoriesにjcenter()の追加も必要


build.gradleの記述を変更し、gradleのSyncを行うと
No resource found that matches the given name: attr 'switchStyle'.
など、Attributeが定義されていません、とエラーが出るので、
エラーが発生している箇所に、"asb_"を追加する
(Attributeの定義名が変更されているので、使用箇所を変更)


<style name="MyTheme" parent="android:Theme.Holo.Light">
        <item name="switchStyle">@style/MySwitch</item>
</style>
<style name="MySwitch" parent="@style/Widget.Holo.Light.CompoundButton.Switch">
        <item name="track">@drawable/switch_track_holo_light</item>
        <item name="thumb">@drawable/switch_inner_holo_light</item>
        <item name="switchTextAppearance">@style/common_switchTextAppearance</item>
        <item name="switchMinWidth">0dip</item>
</style>
<style name="MyTheme" parent="android:Theme.Holo.Light">
        <item name="asb_switchStyle">@style/MySwitch</item>
</style>
<style name="MySwitch" parent="@style/Widget.Holo.Light.CompoundButton.Switch">
        <item name="asb_track">@drawable/switch_track_holo_light</item>
        <item name="asb_thumb">@drawable/switch_inner_holo_light</item>
        <item name="asb_switchTextAppearance">@style/common_switchTextAppearance</item>
        <item name="asb_switchMinWidth">0dip</item>
</style>



2.com.google.android.gms:play-servicesのバージョンを4.4.52→6.1.71にアップ

dependencies {

compile 'com.google.android.gms:play-services:6.1.71'

}
バージョン6.1以降ならOKです。参考



3.compile 'com.android.support:appcompat-v7:21.0.3’を追加

dependencies {

compile 'com.android.support:appcompat-v7:21.0.3’

}


以上で、エラーが解決できました。

0 件のコメント:

コメントを投稿