You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

构建报错:android:attr/fontVariationSettings 资源未找到求助

解决"error: resource android:attr/fontVariationSettings not found"问题

这个问题我之前帮不少开发者排查过,核心原因就是你同时混用了旧的Android Support库和新的AndroidX库,直接导致了资源属性冲突。

具体来说,fontVariationSettings是AndroidX体系里新增的资源属性,但你的项目还在基于旧的Support库(compileSdkVersion 27、appcompat-v7:27.1.1这类依赖)开发。当你添加了AndroidX版本的Room库和WorkManager后,两个不同体系的库在资源定义上出现了重叠,编译器找不到对应的属性就报错了。

给你两个解决方案,优先推荐第一种:

方案一:彻底迁移到AndroidX(推荐)

AndroidX是谷歌官方主推的替代旧Support库的方案,后续所有新特性都会基于AndroidX维护,能从根源解决这类冲突:

  1. 升级编译版本
    先把compileSdkVersion和targetSdkVersion升级到至少28(AndroidX的最低要求之一),修改你的app模块gradle文件:

    android {
        compileSdkVersion 28
        defaultConfig {
            // 其他配置不变
            targetSdkVersion 28
            // 其他配置不变
        }
        // 其他配置不变
    }
    
  2. 开启AndroidX自动转换
    在项目根目录的gradle.properties文件里添加以下两行配置,让Android Studio自动处理依赖转换:

    android.useAndroidX=true
    android.enableJetifier=true
    

    第二行的jetifier会自动把第三方依赖里的旧Support库引用转换成AndroidX版本,不用你手动修改第三方库。

  3. 替换所有旧Support库为AndroidX库
    把gradle里所有com.android.support开头的依赖,换成对应的AndroidX库,比如:

    // 替换前的旧Support库
    // implementation "com.android.support:support-v4:$support_library_version"
    // implementation "com.android.support:appcompat-v7:$support_library_version"
    // implementation "com.android.support:design:$support_library_version"
    // implementation "com.android.support:recyclerview-v7:$support_library_version"
    
    // 替换后的AndroidX库(用稳定版本即可)
    implementation "androidx.core:core:1.6.0"
    implementation "androidx.appcompat:appcompat:1.4.1"
    implementation "com.google.android.material:material:1.5.0"
    implementation "androidx.recyclerview:recyclerview:1.2.1"
    
  4. 统一Room、WorkManager和Lifecycle为AndroidX版本
    你现在同时混用了旧的android.arch开头的库和AndroidX的androidx开头的库,要删掉旧的,保留AndroidX版本:

    // 删除旧的Room依赖
    // implementation "android.arch.persistence.room:runtime:$room_version"
    // annotationProcessor "android.arch.persistence.room:compiler:$room_version"
    
    // 改用AndroidX Room稳定版
    def room_version = "2.4.2"
    implementation "androidx.room:room-runtime:$room_version"
    annotationProcessor "androidx.room:room-compiler:$room_version"
    testImplementation "androidx.room:room-testing:$room_version"
    
    // 改用AndroidX WorkManager稳定版
    def work_version = "2.7.1"
    implementation "androidx.work:work-runtime:$work_version"
    androidTestImplementation "androidx.work:work-testing:$work_version"
    
    // 改用AndroidX Lifecycle库
    def lifecycle_version = "2.4.1"
    implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
    implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"
    

    另外,Android Studio还有个一键迁移工具:Refactor > Migrate to AndroidX,它能自动帮你完成大部分依赖替换和代码修改,比手动改更省心。

方案二:移除所有AndroidX库(临时过渡,不推荐)

如果你暂时不想迁移到AndroidX,可以删掉所有androidx开头的依赖,改用旧的Architecture Components库:

  • 删掉AndroidX版本的Room依赖;
  • 确保WorkManager用的是旧的android.arch.work稳定版本(比如1.0.1),且所有依赖都没有引入AndroidX内容。

不过这个方案只是临时解决,后续谷歌会停止旧Support库的维护,还是建议尽早迁移到AndroidX。

内容的提问来源于stack exchange,提问作者midnightstar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:10:14