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の名称が競合しているため
対応手順
- org.jraf:android-switch-backportのバージョンを1.3.1→1.4.0にアップ
- com.google.android.gms:play-servicesのバージョンを4.4.52→6.1.71にアップ(6.1.+ならOK)
- 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’
…
}
以上で、エラーが解決できました。