2017-06-12 116 views
0

我得到一個錯誤,當我運行這行代碼:拒絕重新初始化,com.google.android.gms.location.LocationService

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

我認爲錯誤的是由ProGuard中的一些錯誤配置引起的,但我無法弄清楚。 Fyi,multidex已啓用。

重要的是,我的應用使用了Firebase。

該應用運行正常,但只有在使用mGoogleApiClient啓動活動時纔會崩潰。

的錯誤是:

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.** 

搖籃文件:

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' 

的庫只有文件夾包含:改裝的2.3.0.jar

回答

0

我想通了。我似乎是由於Google Play服務版本衝突導致的。

我用下面的命令來檢查火力地堡的播放服務的依賴關係:

gradle app:dependencies 

這表明,火力地堡使用的是舊版本比我。 因此,我將Firebase版本設置爲11.0.0,並刪除了「firebase-analytics」。然後,我還將地圖和位置版本設置爲11.0.0,並使用該命令再次檢查依賴關係。

現在Google Play服務的所有依賴關係都是一樣的。現在應用運行良好。