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.
2.jpg
很显然是提示 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' }
来源: http://www.jianshu.com/p/ca860da1f879