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的版本设成一致。如下图所示
- 升级你的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版本过高了,用这个方法可以统一进行处理。如果有什么问题欢迎留言指正。如果对你有帮助,不妨点个赞支持一下。