android - 拒绝对先前失败的类com.google.android.gms.location.LocationService进行重新初始化

标签 android gradle google-play-services

运行以下代码行时出现错误:

 mGoogleApiClient = new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(LocationServices.API)
            .build();

我认为该错误是由ProGuard中的某些错误配置引起的,但我无法弄清楚是什么。方便,multidex已启用。

如果有关系,我的应用程序将使用Firebase。

该应用程序运行正常,但只有在使用mGoogleApiClient启动 Activity 时才会崩溃。

错误是:
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.location.LocationServices$zza>: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/internal/zzzv$zza;
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art:     at void com.google.android.gms.location.LocationServices.<clinit>() ((null):-1)
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art:     at void com.glennruysschaert.arbitrium.Foursquare.FoursquarePlacePickerActivity.onCreate(android.os.Bundle) (FoursquarePlacePickerActivity.java:81)
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art:     at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:6760)
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art:     at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1134)
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art:     at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2681)
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art:     at void android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:2814)
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art:     at void android.app.ActivityThread.-wrap12(android.app.ActivityThread, android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:-1)
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art:     at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1527)
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art:     at void android.os.Looper.loop() (Looper.java:154)
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6290)
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art:     at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art:     at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:886)
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:776)
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.internal.zzzv$zza" on path: DexPathList[[zip file "/data/app/com.glennruysschaert.arbitrium-2/base.apk"],nativeLibraryDirectories=[/data/app/com.glennruysschaert.arbitrium-2/lib/arm64, /system/lib64, /vendor/lib64]]
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art:     at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56)
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:380)
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art:     at void com.google.android.gms.location.LocationServices.<clinit>() ((null):-1)
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art:     at void com.glennruysschaert.arbitrium.Foursquare.FoursquarePlacePickerActivity.onCreate(android.os.Bundle) (FoursquarePlacePickerActivity.java:81)
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art:     at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:6760)
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art:     at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1134)
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art:     at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2681)
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art:     at void android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:2814)
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art:     at void android.app.ActivityThread.-wrap12(android.app.ActivityThread, android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:-1)
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art:     at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1527)
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art:     at void android.os.Looper.loop() (Looper.java:154)
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6290)
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art:     at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art:     at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:886)
06-12 16:58:33.620 24826-24826/com.glennruysschaert.arbitrium I/art:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:776)
06-12 16:58:33.621 24826-24826/com.glennruysschaert.arbitrium I/art: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.internal.zzarl$zza>: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/location/LocationServices$zza;
06-12 16:58:33.621 24826-24826/com.glennruysschaert.arbitrium I/art:     at void com.google.android.gms.location.LocationServices.<clinit>() ((null):-1)
06-12 16:58:33.621 24826-24826/com.glennruysschaert.arbitrium I/art:     at void com.glennruysschaert.arbitrium.Foursquare.FoursquarePlacePickerActivity.onCreate(android.os.Bundle) (FoursquarePlacePickerActivity.java:81)
06-12 16:58:33.621 24826-24826/com.glennruysschaert.arbitrium I/art:     at void android.app.Activity.performCreate(android.os.Bundle) (Activity.java:6760)
06-12 16:58:33.621 24826-24826/com.glennruysschaert.arbitrium I/art:     at void android.app.Instrumentation.callActivityOnCreate(android.app.Activity, android.os.Bundle) (Instrumentation.java:1134)
06-12 16:58:33.621 24826-24826/com.glennruysschaert.arbitrium I/art:     at android.app.Activity android.app.ActivityThread.performLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent) (ActivityThread.java:2681)
06-12 16:58:33.621 24826-24826/com.glennruysschaert.arbitrium I/art:     at void android.app.ActivityThread.handleLaunchActivity(android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:2814)
06-12 16:58:33.621 24826-24826/com.glennruysschaert.arbitrium I/art:     at void android.app.ActivityThread.-wrap12(android.app.ActivityThread, android.app.ActivityThread$ActivityClientRecord, android.content.Intent, java.lang.String) (ActivityThread.java:-1)
06-12 16:58:33.621 24826-24826/com.glennruysschaert.arbitrium I/art:     at void android.app.ActivityThread$H.handleMessage(android.os.Message) (ActivityThread.java:1527)
06-12 16:58:33.621 24826-24826/com.glennruysschaert.arbitrium I/art:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:102)
06-12 16:58:33.621 24826-24826/com.glennruysschaert.arbitrium I/art:     at void android.os.Looper.loop() (Looper.java:154)
06-12 16:58:33.621 24826-24826/com.glennruysschaert.arbitrium I/art:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6290)
06-12 16:58:33.621 24826-24826/com.glennruysschaert.arbitrium I/art:     at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
06-12 16:58:33.621 24826-24826/com.glennruysschaert.arbitrium I/art:     at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:886)
06-12 16:58:33.621 24826-24826/com.glennruysschaert.arbitrium I/art:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:776)
06-12 16:58:33.621 24826-24826/com.glennruysschaert.arbitrium I/art: Caused by: java.lang.ClassNotFoundException: com.google.android.gms.location.LocationServices$zza
06-12 16:58:33.621 24826-24826/com.glennruysschaert.arbitrium I/art:     at java.lang.Class java.lang.VMClassLoader.findLoadedClass!(java.lang.ClassLoader, java.lang.String) (VMClassLoader.java:-2)
06-12 16:58:33.621 24826-24826/com.glennruysschaert.arbitrium I/art:     at java.lang.Class java.lang.ClassLoader.findLoadedClass(java.lang.String) (ClassLoader.java:742)
06-12 16:58:33.621 24826-24826/com.glennruysschaert.arbitrium I/art:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:362)
06-12 16:58:33.621 24826-24826/com.glennruysschaert.arbitrium I/art:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
06-12 16:58:33.621 24826-24826/com.glennruysschaert.arbitrium I/art:     at void com.google.android.gms.location.LocationServices.<clinit>() ((null):-1)

我的ProGuard文件:
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
  **[] $VALUES;
  public *;
}

-dontwarn okio.**
-dontwarn javax.annotation.**

-keep class com.google.android.gms.** { *; }
-dontwarn com.google.android.gms.**

Gradle 文件:
apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
    buildToolsVersion "25.0.0"
    defaultConfig {
        applicationId "MYAPPID..."
        minSdkVersion 19
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        multiDexEnabled  true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

repositories {
    mavenCentral()
    flatDir {
        dirs 'libs'
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:24.2.1'
    compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha9'
    compile fileTree(include: ['*.jar'], dir: 'libs')

    //Firebase
    compile 'com.google.firebase:firebase-core:10.0.1'
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:design:24.0.0'
    compile 'com.firebaseui:firebase-ui:1.2.0'
    compile 'com.google.firebase:firebase-analytics:9.2.0'

    //Circle Image
    compile 'de.hdodenhof:circleimageview:2.1.0'

    //Glide - Offline image store library
    compile 'com.github.bumptech.glide:glide:4.0.0-RC0'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.0.0-RC0'

    //Info dialog: https://github.com/yarolegovich/LovelyDialog
    compile 'com.yarolegovich:lovely-dialog:1.0.7'

    //Calendar like transition between activities: compile 'com.kogitune:pre-lollipop-activity-transition:1.x.x'
    compile 'com.kogitune:pre-lollipop-activity-transition:1.3.3'


    //Control animations: https://github.com/andkulikov/transitions-everywhere
    compile "com.andkulikov:transitionseverywhere:1.7.4"

    //Http requests: https://github.com/square/retrofit

    //Play services
    //compile 'com.google.android.gms:play-services:10.0.1'
    compile 'com.google.android.gms:play-services-maps:10.0.1'
    compile 'com.google.android.gms:play-services-location:10.0.1'

    //Multidex
    compile 'com.android.support:multidex:1.0.1'
}


apply plugin: 'com.google.gms.google-services'

libs文件夹仅包含:retrofit-2.3.0.jar

最佳答案

我想到了。我似乎是由于Google Play服务版本冲突。

我使用以下命令来检查Firebase的Play服务依赖项:

gradle app:dependencies

这表明Firebase使用的是比我更旧的版本。
因此,我将Firebase版本设置为11.0.0,并删除了“firebase-analytics”。然后,我还将 map 和位置版本设置为11.0.0,并使用命令再次检查依赖项。

现在,Google Play服务的所有依赖项都相同。现在,该应用程序可以正常运行。

关于android - 拒绝对先前失败的类com.google.android.gms.location.LocationService进行重新初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44502834/

相关文章:

android - 更改用户和 Android 应用程序文件组以复制用户遇到的问题

java - Gradle 无法找到打包为 OSGi bundle 的下载依赖项(非 OSGi 应用程序)

gradle - Gradle无法从mavenLocal解析插件的动态版本,如何获取最新版本?

android - LocationListener LocationCallback 有什么区别?

java - 无法在 Android Studio 中使用 BaseGameActivity

android - 过滤实时数据库安卓

android - View 立即跳跃和闪烁,虽然 animateLayoutChanges ="true"

java - ImageView 上的 setBackgroundResource 返回 null

gradle - 将复制任务添加为现有Gradle任务的依赖项

google-play-services - NoClassDefFoundError 谷歌播放服务/ map