【问题标题】:minSdkVersion 21 crashes app. 20 and below works fineminSdkVersion 21 使应用程序崩溃。 20及以下工作正常
【发布时间】:2018-04-04 17:33:31
【问题描述】:

目前我的应用程序minSdkVersion 15。一切都很好。对于我想要添加到我的应用程序的内容,我需要 multidexminSdkVersion 21 或更高版本。无论我尝试哪种方式,我的应用程序都会崩溃并出现此错误。

java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/internal/zzab;
 04-04 13:14:09.612 20274 20274 E   AndroidRuntime                               at com.google.firebase.provider.FirebaseInitProvider.zza(Unknown Source:2)
 04-04 13:14:09.612 20274 20274 E   AndroidRuntime                               at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source:0)
 04-04 13:14:09.612 20274 20274 E   AndroidRuntime                               at android.app.ActivityThread.installProvider(ActivityThread.java:6572)
 04-04 13:14:09.612 20274 20274 E   AndroidRuntime                               at android.app.ActivityThread.installContentProviders(ActivityThread.java:6127)
 04-04 13:14:09.612 20274 20274 E   AndroidRuntime                               at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6037)
 04-04 13:14:09.612 20274 20274 E   AndroidRuntime                               at android.app.ActivityThread.-wrap1(Unknown Source:0)
 04-04 13:14:09.612 20274 20274 E   AndroidRuntime                               at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1764)
 04-04 13:14:09.612 20274 20274 E   AndroidRuntime                               at android.os.Handler.dispatchMessage(Handler.java:105)
 04-04 13:14:09.612 20274 20274 E   AndroidRuntime                               at android.os.Looper.loop(Looper.java:164)
 04-04 13:14:09.612 20274 20274 E   AndroidRuntime                               at android.app.ActivityThread.main(ActivityThread.java:6938)
 04-04 13:14:09.612 20274 20274 E   AndroidRuntime                               at java.lang.reflect.Method.invoke(Native Method)
 04-04 13:14:09.612 20274 20274 E   AndroidRuntime                               at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
 04-04 13:14:09.612 20274 20274 E   AndroidRuntime                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
 04-04 13:14:09.612 20274 20274 E   AndroidRuntime                               Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.common.internal.zzab" on path: DexPathList[[zip file "/data/app/com.JEB.trailmaps-USsJPJClgRBZb0OXtU0Gmg==/base.apk"],nativeLibraryDirectories=[/data/app/com.JEB.trailmaps-USsJPJClgRBZb0OXtU0Gmg==/lib/arm64, /data/app/com.JEB.trailmaps-USsJPJClgRBZb0OXtU0Gmg==/base.apk!/lib/arm64-v8a, /system/lib64, /system/vendor/lib64]]
 04-04 13:14:09.612 20274 20274 E   AndroidRuntime                               at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:93)
 04-04 13:14:09.612 20274 20274 E   AndroidRuntime                               at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
 04-04 13:14:09.612 20274 20274 E   AndroidRuntime                               at java.lang.ClassLoader.loadClass(ClassLoader.java:312)

我什至没有添加任何依赖项就明白了。我所做的只是将minSdkVersion 更改为21。我通过Google 找到的所有内容都指向需要multidex。但是我实际上还没有添加依赖项来实际需要 multidex。当我添加 multidex 时,我也会得到相同的日志。

这是我的 Gradle

apply plugin: 'com.android.application'

    android {
        compileSdkVersion 24
        buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "com.JEB.trailmaps"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 533
        versionName "5.3.3"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
    repositories {
        mavenCentral()
    }

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.mapbox.mapboxsdk:mapbox-android-sdk:5.5.1'
        compile 'com.android.support:support-v4:25.0.0'
        compile 'com.android.support:appcompat-v7:25.0.0'
        compile 'com.android.support:design:25.0.0'
        compile 'com.android.support:recyclerview-v7:25.0.0'
        compile 'com.android.support:cardview-v7:25.0.0'
        compile 'com.google.firebase:firebase-database:9.4.0'
        compile 'com.firebaseui:firebase-ui-database:0.4.0'
        compile "com.google.android.gms:play-services-places:9.4.0"
        compile 'com.google.android.gms:play-services-ads:9.4.0'
    }
apply plugin: 'com.google.gms.google-services' 

【问题讨论】:

  • 我猜您尝试执行的功能可能在 SDK 21 或更高版本中已被弃用!
  • 尝试更新所有库、compileSdk 和 buildtools 版本
  • 当尝试使用最新的播放服务位置时,我得到“依赖 com.google.android.gms:play-services-places:12.0.1 not found”。如果我之前应该提到我正在使用 AIDE 应用程序在我的手机上制作我的应用程序,那么我可以在我的休息时间工作。
  • 当我将广告更改为最新的库时,也会出现同样的未找到错误

标签: android firebase android-gradle-plugin android-support-library


【解决方案1】:

我注意到一些事情:

  • 您的依赖项显示25.0.0 而您的compileSdkVersion and targetSdkVersion is 24
  • 假设您已将规则添加到您的根级 build.gradle 文件中,以包含 google-services 插件和 Google's Maven repository

buildscript {
    // ...
    dependencies {
        // ...
        classpath 'com.google.gms:google-services:3.2.0' // google-services plugin
    }
}

allprojects {
    // ...
    repositories {
        // ...
        maven {
            url "https://maven.google.com" // Google's Maven repository
        }
    }
}
  • 如果您使用build:gradle:3.0 or higher please use implementation 而不是compile
  • 如果您有firebase dependencies,请始终确保将其版本更新为match version of google services
  • 推荐: 下载最新的 Google 支持存储库(如果您正在使用 firebase 和 Google 服务,则至少为 26.0.0 或更高版本) - 您可以在 Tools -> Android -> SDK Manager -> SDK Tools 中找到它
  • 无法解决com.firebaseui:firebase-ui-database:0.4.0阅读更多here

因此,您的最终 Gradle 文件应如下所示:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    buildToolsVersion "26.0.3"

    defaultConfig {
        applicationId "com.JEB.trailmaps"
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 533
        versionName "5.3.3"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    repositories {
        mavenCentral()
        jCenter()
    }
}
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.mapbox.mapboxsdk:mapbox-android-sdk:5.5.1'
    implementation 'com.android.support:support-v4:26.1.0'
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support:design:26.1.0'
    implementation 'com.android.support:recyclerview-v7:26.1.0'
    implementation 'com.android.support:cardview-v7:26.1.0'
    implementation 'com.google.firebase:firebase-database:12.0.0'
    implementation 'com.firebaseui:firebase-ui-database:0.4.0'
    implementation 'com.google.android.gms:play-services-places:12.0.0'
    implementation 'com.google.android.gms:play-services-ads:12.0.0'
    implementation 'com.android.support:multidex:1.0.0'
}
apply plugin: 'com.google.gms.google-services' 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-31
    • 2014-12-10
    • 2017-07-12
    • 1970-01-01
    • 2019-12-05
    • 1970-01-01
    相关资源
    最近更新 更多