Bug出现
今天在项目开发中,编译工程时,突然出现了一个莫名的错误提示,即标题的“Error:In <declare-styleable> FontFamilyFont, unable to find attribute android:fontVariationSettings”:导致编译无法通过。
1.jpg(有些的人的编译错误提示是: Error:In FontFamilyFont, unable to find attribute android:font ,等等)
出现原因
1.可能是compileSdkVersion与targetSdkVersion的版本不一致(如“Android中出现Error:In <declare-styleable> FontFamilyFont, unable to find attribute android:font 解决办法”);
2.可能是工程中依赖的com.android.support:support-v4 (或support-v7) 版本不一致。
解决方法
原因1的解决方法很简单,把自己工程的build.gradle文件中的compileSdkVersion及targetSdkVersion的版本设成一致就OK了,如27。
原因2 的解决方法则是检查自己工程是否有重复导入support-v4包 或 依赖的类库中是否有重复导入support-v4包,若有则剔除即可。
自己的工程问题
然而我查看自己的工程,这两个版本一直是一致的都是27,这个工程已维护好几个月了,不可能出现此问题。排除问题1;
再看dependencies中的一行依赖有个提示:All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes).Found versions 28.0.0-alpha1,27.0.0.Examples include com.android.support:asynclayoutinflater:28.0.0-alpha1 and com.android.support:animated-vector-drawable:27.0.0.
很显然是提示support-v4不一致的,自己的工程仅仅引入了一次,那只能是依赖的类库中的问题了。经过一番查询,发现是# AndroidPicker这个安卓选择类库出现的问题,:
3.jpg
原来是这个类库的support-v4使用的是最新版本,正好3月8日凌晨google发布了安卓9.0(即Android P)首个开发者预览版,导致了重新编译工程时,此类库的support-v4使用的是最新的com.android.support:support-v4:28.0.0 rc1,与我工程中的27.0.0不一致了,从而导致了“Error:In <declare-styleable> FontFamilyFont, unable to find attribute android:fontVariationSettings”的错误(难怪我工程的compileSdkVersion 和targetSdkVersion使用'android-P' 可以编译通过,无错误提示)。
自己工程解决
终于发现自己工程依赖的类库#AndroidPicker问题,因而剔除类库中的support-v4,统一使用自己工程的就OK了(其他类似问题同理解决)。
compile('cn.qqtheme.framework:WheelPicker:latest.release') { exclude group: 'com.android.support' }
网友评论
exclude group: 'com.android.support'
}