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

添加Google Maps至Android应用时遭遇java.lang.NoClassDefFoundError错误

Android应用添加Google Maps后出现NoClassDefFoundError错误

我正在给连接Parse服务器的Android应用添加Google Maps Activity,已经完成了地图Activity的添加并创建了对应的API key,但运行应用时出现了如下致命错误:

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.parse.starter, PID: 14204 java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/internal/zzbq; at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source:2) at android.app.ActivityThread.installProvider(ActivityThread.java:6285) at android.app.ActivityThread.installContentProviders(ActivityThread.java:5851) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5772) at android.app.ActivityThread.-wrap1(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1661) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6541) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.common.internal.zzbq" on path: DexPathList[[zip file "/data/app/com.parse.starter-pGR71qLVNb0LE-PnOSAJaA==/base.apk"],nativeLibraryDirectories=[/data/app/com.parse.starter-pGR71qLVNb0LE-PnOSAJaA==/lib/x86, /system/lib, /vendor/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93) at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) ... 11 more

我怀疑问题出在Gradle脚本里(相关代码行已经标红),下面是我的两个Gradle文件内容:

顶层build.gradle文件

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        mavenCentral()
        maven { url 'https://maven.google.com/' name 'Google' }
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.2'
    }
}

allprojects {
    repositories {
        mavenCentral()
        maven { url 'https://maven.google.com/' name 'Google' }
    }
}

ext {
    compileSdkVersion = 22
    buildToolsVersion = "23.0.1"
    minSdkVersion = 14
    targetSdkVersion = 23
}

模块级build.gradle文件

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion '27.0.3'

    defaultConfig {
        applicationId "com.parse.starter"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
    }

    dexOptions {
        javaMaxHeapSize "4g"
    }

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'
    implementation 'com.google.android.gms:play-services-maps:15.0.1'
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.parse.bolts:bolts-tasks:1.3.0'
    compile 'com.parse:parse-android:1.13.0'
    compile 'com.google.android.gms:play-services:9.4.0'
    compile 'com.android.support:multidex:1.0.0'
}

我尝试过更新部分依赖版本(比如compile 'com.android.support:appcompat-v7:23.4.0'这行),但错误还是没解决。我是Android开发新手,对这些文件的逻辑不太熟悉。

补充说明:当我注释掉implementation 'com.google.android.gms:play-services-maps:15.0.1'后,应用能正常运行,但Google Maps功能就用不了了。请问这是不是依赖版本和Gradle版本不兼容导致的?


解决方案

你的问题确实是Google Play Services依赖版本不兼容导致的——你同时引入了play-services:9.4.0(完整包)和play-services-maps:15.0.1(单独模块),这两个版本差距太大,引发了类找不到的错误。另外,你的Gradle插件版本、支持库版本也和这些服务版本有匹配问题,下面是一步步的修复步骤:

1. 统一Google Play Services依赖版本

首先,移除旧的完整play-services依赖,保留单独的play-services-maps,并且确保所有Google相关依赖使用同一大版本(选一个和你的Gradle插件3.1.2兼容的稳定版本,比如17.0.0)。

修改模块级build.gradle的dependencies块:

dependencies {
    implementation 'com.android.support.constraint:constraint-layout:1.1.0'
    // 使用统一的Play Services版本
    implementation 'com.google.android.gms:play-services-maps:17.0.0'
    // 支持库版本和compileSdkVersion保持一致,当前是23.4.0,无需修改
    implementation 'com.android.support:appcompat-v7:23.4.0'
    implementation 'com.parse.bolts:bolts-tasks:1.3.0'
    implementation 'com.parse:parse-android:1.13.0'
    // 移除冲突的旧版完整Play Services包
    // compile 'com.google.android.gms:play-services:9.4.0'
    implementation 'com.android.support:multidex:1.0.0'
}

2. 对齐compileSdkVersion和支持库版本

你的模块级build.gradle里compileSdkVersion是23,所以所有com.android.support开头的依赖版本都应该是23.x.x,你当前的appcompat-v7:23.4.0是正确的,不用改动。如果后续升级compileSdk,记得同步更新支持库版本。

3. 优化顶层build.gradle配置

确保顶层build.gradle的仓库配置正确,google()仓库优先加载,同时可以统一管理依赖版本,方便后续维护:

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        google() // 优先使用Google官方仓库
        mavenCentral()
        maven { url 'https://maven.google.com/' name 'Google' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.2'
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
        maven { url 'https://maven.google.com/' name 'Google' }
    }
}

ext {
    compileSdkVersion = 23 // 和模块级配置保持一致
    buildToolsVersion = "27.0.3"
    minSdkVersion = 14
    targetSdkVersion = 23
    playServicesVersion = "17.0.0" // 统一Play Services版本变量
    supportLibVersion = "23.4.0" // 统一支持库版本变量
}

之后模块级可以用变量引用依赖,更简洁:

implementation "com.google.android.gms:play-services-maps:${rootProject.ext.playServicesVersion}"
implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"

4. 清理并重建项目

做完上述修改后,执行以下操作确保缓存清理干净:

  • 点击Android Studio菜单栏的Build > Clean Project
  • 然后点击Build > Rebuild Project
  • 必要时重启Android Studio(缓存问题有时候需要重启才能彻底解决)

额外注意事项

  • 不要同时引入play-services完整包和单个功能模块(比如maps、location),完整包体积庞大,而且极易和单独模块版本冲突
  • 保持所有Google相关依赖(Play Services、Firebase等)版本一致,这是避免类似类找不到错误的核心原则
  • 如果后续需要其他Play Services功能,比如定位,直接引入对应的单个模块即可,例如implementation 'com.google.android.gms:play-services-location:17.0.0'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:31:47