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

Android Studio编译项目时遇NoSuchMethodError异常求助

解决 java.lang.NoSuchMethodError: ResourcesCompat.getFont() 错误

嘿,这个错误我帮不少开发者搞定过,本质就是你的项目里Android Support库和AndroidX版本冲突,或者依赖的库版本不兼容,导致找不到对应的getFont静态方法。下面是几个经过验证的解决步骤,按顺序试就行:

1. 直接迁移到AndroidX(最推荐的长期方案)

如果你的项目还在沿用旧的Android Support库,直接迁移到AndroidX一劳永逸,彻底解决这类版本冲突:

  • 打开Android Studio,点顶部菜单栏的 Refactor > Migrate to AndroidX...
  • 跟着向导走就行,AS会自动把所有Support库依赖换成对应的AndroidX库
  • 迁移完记得检查gradle.properties里有没有这两行,没有就加上:
    android.useAndroidX=true
    android.enableJetifier=true
    
    第二行的Jetifier会自动把第三方依赖里的旧Support库转换成AndroidX兼容版本,很省心。

2. 统一Support库版本(暂时不想迁移的话)

要是还想用Support库,必须保证所有相关依赖的版本完全一致,不能有的用27,有的用28:

  • 打开app/build.gradle,找所有com.android.support:开头的依赖
  • 把它们的版本号统一成同一个稳定版,比如28.0.0(这是Support库的最后一个稳定版本)
    举个例子:
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support:recyclerview-v7:28.0.0'
    implementation 'com.android.support:design:28.0.0'
    
  • 同步gradle后重新编译项目

3. 揪出第三方依赖的冲突

有些第三方库自己内部依赖了不同版本的Support库,偷偷搞事情:

  • 打开Android Studio的Terminal,执行命令:
    ./gradlew app:dependencies
    
  • 看输出里的android.support.v4相关条目,找到版本不一样的那个
  • 用exclude语法把冲突的依赖排除掉,比如:
    implementation('com.example:some-third-party-lib:1.0.0') {
        exclude group: 'com.android.support', module: 'support-v4'
    }
    

4. 清理缓存重新构建

有时候缓存抽风也会导致这种奇怪的错误,试试:

  • 点顶部的Build > Clean Project
  • 再点Build > Rebuild Project
  • 要是还不行,手动删了项目根目录的.gradle文件夹和app/build文件夹,再同步gradle

补充一句:ResourcesCompat.getFont()是从Support Library 26.0.0才开始有的方法,要是你的项目里有依赖低于这个版本的库,肯定会找不到,所以统一版本是核心。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:05:34