In FontFamilyFont, unable to find attribute android:font的报错处理

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
复制代码

你是否是也遇到过这种问题,而不知道从何下手?明明所有版本都已经修改过了,为何仍是会出现这种错误?咱们带着心中的小疑惑来看一下这是为何以及他的解决办法。进入正题,先说下出现这个问题的缘由:android

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

具体解决方案:bash

缘由一:compileSdkVersion 和buildToolsVersion 的版本不对应

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

  • 升级你的buildToolsVersion到最新版,问题直接解决。
  • 也能够选择将目标版本降到你的sdk版本。不幸的是,问题丝毫没改变。

经过第一点的改正,咱们排除了compileSdkVersion 和buildToolsVersion 的版本不对应的问题。可是仍是没有彻底解决掉该问题。我们接着往下看ide

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

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

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

对于不是本身的项目而项目自己又有不少依赖的时候,这个工做量是巨大且盲目的,所有都查一遍的话是要疯掉的。不要紧,我们有简单粗暴并且有效的办法,我们在configurations.all{}修正v4包版本的版本信息,以下所示ui

android {
    configurations.all {
        resolutionStrategy.force 'com.android.support:support-v4:25.3.1'
    }
}
复制代码

让咱们愉快的运行起来,忽然发现仍是报相同的错误。难道说是骗人的?并非这样,刚才说了,多是com.android.support:support-v4,也多是com.android.support:appcompat-v7致使的或者是其余的support包致使的。spa

简单粗暴,直接有效

仍是在configurations.all{}中,我们对com.android.support:统一配置版本,代码以下:code

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版本太高了,用这个方法能够统一进行处理。若是有什么问题欢迎留言指正。若是对你有帮助,不妨点个赞支持一下。orm

相关文章
相关标签/搜索