In FontFamilyFont, unable to fin

作者: 四级五次郎 | 来源:发表于2018-07-20 14:11 被阅读1次
    Information:Gradle tasks [:app:generateDebugSources, :app:mockableAndroidJar, :app:prepareDebugUnitTestDependencies, :app:generateDebugAndroidTestSources]
    Error:In <declare-styleable> FontFamilyFont, unable to find attribute android:font
    Error:In <declare-styleable> FontFamilyFont, unable to find attribute android:fontWeight
    Error:Execution failed for task ':app:processDebugResources'.
    > com.android.ide.common.process.ProcessException: Failed to execute aapt
    Information:BUILD FAILED
    

    你是不是也遇到过这种问题,而不知道从何下手?明明全部版本都已经修改过了,为什么还是会出现这种错误?我们带着心中的小疑惑来看一下这是为什么以及他的解决办法。进入正题,先说下出现这个问题的原因:

    1.compileSdkVersion 和buildToolsVersion 的版本不对应
    2.可能是工程中依赖的com.android.support:support-v4 (或support-v7) 版本不一致。

    具体解决方案:

    原因一:compileSdkVersion 和buildToolsVersion 的版本不对应

    把工程的build.gradle文件中的compileSdkVersion及buildToolsVersion的版本设成一致。如下图所示


    TIM图片20180720123103.png
    • 升级你的buildToolsVersion到最新版,问题直接解决。
    • 也可以选择将目标版本降到你的sdk版本。不幸的是,问题丝毫没改变。

    通过第一点的改正,我们排除了compileSdkVersion 和buildToolsVersion 的版本不对应的问题。但是还是没有完全解决掉该问题。咱们接着往下看

    原因二:工程中依赖的com.android.support:support-v4 (或support-v7) 版本不一致

    由于是导入别人的项目,对于dependencies{}中依赖的项目需要挨个排查依赖库使用的v4或者v7包的版本,最后找出原因并剔除类库中的support-v4,统一使用自己工程的就OK了(其他类似问题同理解决)
    例如AndroidPicker类,修改如下

    compile('cn.qqtheme.framework:WheelPicker:latest.release') { exclude group: 'com.android.support' }
    

    对于不是自己的项目而项目本身又有很多依赖的时候,这个工作量是巨大且盲目的,全部都查一遍的话是要疯掉的。没关系,咱们有简单粗暴而且有效的办法,咱们在configurations.all{}修正v4包版本的版本信息,如下所示

    android {
        configurations.all {
            resolutionStrategy.force 'com.android.support:support-v4:25.3.1'
        }
    }
    

    让我们愉快的运行起来,突然发现还是报相同的错误。难道说是骗人的?并不是这样,刚才说了,可能是com.android.support:support-v4,也可能是com.android.support:appcompat-v7导致的或者是其他的support包导致的。

    简单粗暴,直接有效

    还是在configurations.all{}中,咱们对com.android.support:统一配置版本,代码如下:

    android {
        configurations.all {
            resolutionStrategy.eachDependency { DependencyResolveDetails details ->
                def requested = details.requested
                if (requested.group == 'com.android.support') {
                    if (!requested.name.startsWith("multidex")) {
                        details.useVersion '25.3.1'
                    }
                }
            }
        }
    }
    

    问题解决,Sync一下项目自不用说。以后再也不用担心项目中依赖的某个库中依赖了support-v4或者v7版本过高了,用这个方法可以统一进行处理。如果有什么问题欢迎留言指正。如果对你有帮助,不妨点个赞支持一下。

    相关文章

      网友评论

        本文标题:In FontFamilyFont, unable to fin

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