- 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 版本过高了, 用这个方法可以统一进行处理. 如果有什么问题欢迎留言指正. 如果对你有帮助, 不妨点个赞支持一下.
来源: https://juejin.im/post/5b517d535188251b186bbf65