美文网首页android开发遇到的坑Android开发经验谈程序员
最新安卓9.0(Android P) 引起的Bug解决:Erro

最新安卓9.0(Android P) 引起的Bug解决:Erro

作者: Adam289 | 来源:发表于2018-03-09 10:21 被阅读2070次

    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' }

    相关文章

      网友评论

      • 张_314c:找了一圈发现V7有重叠问题,但是怎么剔除引用呢,困扰了两天了这个问题,能麻烦您说的详细一点吗
        张_314c:@Adam289 我可以加你个联系方式吗,或者你加我18548914366VX
        Adam289:类似我文中写的在依赖包后面exclude 掉没效果吗: compile('cn.qqtheme.framework:WheelPicker:latest.release') {
        exclude group: 'com.android.support'
        }
      • Yera丶:从上午上班找到现在,感谢
      • 玩偶西:为了这个问题我查了三天了,我就很疑惑为什么前一天还好好的代码第二天就不行了,关键是什么都没改。送上2元不成敬意,万分感谢!
        Adam289:哈哈,不客气的,也谢谢打赏~我也是困扰浪费了不少时间,所以记录下来以便他人能解决类似问题~能帮到人很开心
      • ef5c5890911f:贴主,能麻烦告知一下怎么查找依赖包的com.android.support:support-v4,不怎么会
        ef5c5890911f:@Adam289 哦~我在当前工程里面找的,唉~肯定找不到啊
        Adam289:@Bertwind 去这些依赖类库的来源网站上看源码,能找到的呀!

      本文标题:最新安卓9.0(Android P) 引起的Bug解决:Erro

      本文链接:https://www.haomeiwen.com/subject/dtqpfftx.html