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

运行时出现java.lang.NoClassDefFoundError错误,启用MultiDex仍未解决

解决java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/api/Api$zzf;错误

问题描述

我在运行Android应用时遇到了以下错误:

java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/api/Api$zzf;

已经在项目的build.gradle中设置了multiDexEnabled true,但错误依然存在,目前找不到问题根源和有效解决办法。

针对性解决方案

既然已经开启了MultiDex,我们可以从以下几个方向排查修复:

  • 统一Google Play Services依赖版本
    这个错误大概率是项目内不同模块的Google Play Services依赖版本不一致导致的。比如有的模块用了com.google.android.gms:play-services-auth:16.0.0,另一个模块却用了com.google.android.gms:play-services-maps:17.0.0,版本差异会触发这类类找不到的问题。
    建议在项目根目录的build.gradle中统一定义版本变量,再在各模块中引用:

    // 根目录build.gradle
    ext {
        gms_version = "20.1.0" // 替换为当前稳定兼容的版本
    }
    
    // 模块build.gradle
    implementation "com.google.android.gms:play-services-auth:${gms_version}"
    implementation "com.google.android.gms:play-services-maps:${gms_version}"
    
  • 补全MultiDex完整配置
    仅开启multiDexEnabled true可能不够,还需要完成以下步骤:

    1. 如果应用支持API级别低于21,需添加MultiDex依赖:
      implementation 'androidx.multidex:multidex:2.0.1'
      
    2. 自定义Application类继承MultiDexApplication,或者在现有Application的attachBaseContext方法中初始化MultiDex:
      // 方式一:继承MultiDexApplication
      public class MyApp extends MultiDexApplication {
          // 你的其他代码
      }
      
      或者:
      // 方式二:在现有Application中初始化
      public class MyApp extends Application {
          @Override
          protected void attachBaseContext(Context base) {
              super.attachBaseContext(base);
              MultiDex.install(this);
          }
      }
      
      最后别忘了在AndroidManifest.xml中指定这个自定义Application:
      <application
          android:name=".MyApp"
          <!-- 其他配置项 -->
      >
      
  • 清理缓存并重建项目
    缓存异常也可能引发这类奇怪问题,执行以下操作:

    • 点击Android Studio顶部菜单栏的Build -> Clean Project
    • 接着点击Build -> Rebuild Project
    • 也可以手动删除项目根目录的.gradle、build文件夹,以及各模块下的build文件夹,再重新构建项目。
  • 排查并排除依赖冲突
    使用Android Studio的Gradle -> app -> Tasks -> android -> dependencies任务查看完整依赖树,找出重复或冲突的Google Play Services依赖,通过排除规则清理冗余依赖:

    implementation('第三方依赖库:版本号') {
        exclude group: 'com.google.android.gms'
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:46:01