2015-07-23 19 views
6

Google Analytics'i uyguladıktan sonra uygulamanız Lollipop'tan eski cihazlarda anında çöker. (Android bloğun içine)Android 4.4'te Google Analytics 7.5.0 (Play Hizmetleri) uygulaması ve çöküşün altında

07-22 15:42:43.831: W/dalvikvm(1815): VFY: unable to resolve virtual method  16407: Lcom/google/android/gms/analytics/internal/zzg;.getApplicationContext ()Landroid/content/Context; 
07-22 15:42:43.831: D/dalvikvm(1815): VFY: replacing opcode 0x6e at 0x0003 
07-22 15:42:43.831: I/dalvikvm(1815): Could not find method com.google.android.gms.internal.zzld.zzoQ, referenced from method com.google.android.gms.analytics.internal.zzf.zzV 
07-22 15:42:43.831: W/dalvikvm(1815): VFY: unable to resolve static method 27402: Lcom/google/android/gms/internal/zzld;.zzoQ()Lcom/google/android/gms/internal/zzlb; 
07-22 15:42:43.831: D/dalvikvm(1815): VFY: replacing opcode 0x71 at 0x000e 
07-22 15:42:43.831: W/dalvikvm(1815): VFY: unable to find class referenced in signature (Lcom/google/android/gms/internal/zzlb;) 
07-22 15:42:43.831: W/dalvikvm(1815): VFY: Ljava/lang/Object; is not instance of Lcom/google/android/gms/analytics/internal/zzd; 
07-22 15:42:43.831: W/dalvikvm(1815): VFY: bad arg 1 (into Lcom/google/android/gms/analytics/internal/zzd;) 
07-22 15:42:43.831: W/dalvikvm(1815): VFY: rejecting call to Lcom/google/android/gms/analytics/internal/zzf;.zza (Lcom/google/android/gms/analytics/internal/zzd;)V 
07-22 15:42:43.831: W/dalvikvm(1815): VFY: rejecting opcode 0x70 at 0x0002 
07-22 15:42:43.831: W/dalvikvm(1815): VFY: rejected Lcom/google/android/gms/analytics/internal/zzf;.zzhT()Lcom/google/android/gms/analytics/internal/zzv; 
07-22 15:42:43.831: W/dalvikvm(1815): Verifier rejected class Lcom/google/android/gms/analytics/internal/zzf; 
07-22 15:42:43.831: D/AndroidRuntime(1815): Shutting down VM 
07-22 15:42:43.831: W/dalvikvm(1815): threadid=1: thread exiting with uncaught exception (group=0xb0ce1b20) 
07-22 15:42:43.831: E/AndroidRuntime(1815): FATAL EXCEPTION: main 
07-22 15:42:43.831: E/AndroidRuntime(1815): Process: ---,  PID: 1815 
07-22 15:42:43.831: E/AndroidRuntime(1815): java.lang.VerifyError: com/google/android/gms/analytics/internal/zzf 
07-22 15:42:43.831: E/AndroidRuntime(1815):  at com.google.android.gms.analytics.GoogleAnalytics.getInstance(Unknown Source) 
07-22 15:42:43.831: E/AndroidRuntime(1815):  at com.x.x.x.onCreate(x.java:22) 
07-22 15:42:43.831: E/AndroidRuntime(1815):  at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007) 
07-22 15:42:43.831: E/AndroidRuntime(1815):  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4328) 
07-22 15:42:43.831: E/AndroidRuntime(1815):  at android.app.ActivityThread.access$1500(ActivityThread.java:135) 
07-22 15:42:43.831: E/AndroidRuntime(1815):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
07-22 15:42:43.831: E/AndroidRuntime(1815):  at android.os.Handler.dispatchMessage(Handler.java:102) 
07-22 15:42:43.831: E/AndroidRuntime(1815):  at android.os.Looper.loop(Looper.java:136) 
07-22 15:42:43.831: E/AndroidRuntime(1815):  at android.app.ActivityThread.main(ActivityThread.java:5001) 
07-22 15:42:43.831: E/AndroidRuntime(1815):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-22 15:42:43.831: E/AndroidRuntime(1815):  at java.lang.reflect.Method.invoke(Method.java:515) 
07-22 15:42:43.831: E/AndroidRuntime(1815):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
07-22 15:42:43.831: E/AndroidRuntime(1815):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
07-22 15:42:43.831: E/AndroidRuntime(1815):  at dalvik.system.NativeStart.main(Native Method) 

Benim Gradle dosyası:

compile 'com.google.android.gms:play-services-analytics:7.5.0'

Zaten web'de çok aranan:

compileSdkVersion 22 
buildToolsVersion "22.0.1" 

defaultConfig { 
    applicationId "x.x.x" 
    minSdkVersion 14 
    targetSdkVersion 22 
    versionCode 6 
    versionName "0.5" 
    multiDexEnabled true 
} 
buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
} 

Ben Google Play Hizmetlerinin bu sürümü kullanın Bu konu, ancak sorunu çözen hiçbir şey bulamadı. En yakın olanı SO yanıtıydı, maalesef benim için çalışmadı: https://stackoverflow.com/a/31432568

+0

Başka yerde bildirilen google oyun hizmetleriniz var mı? Sadece "com.google.android.gms: play-services: 7.5.0" analytics olmak yerine tüm kütüphaneyi derlediğinizde ne olur? – Andy

+0

@Leander Herhangi bir çözüm buldunuz mu? – thekosmix

+0

@Andy Hayır, başka hiçbir yerde oyun hizmeti vermedim. Uygulamam düzgün bir şekilde derlendi ve lolipop öncesi cihazlarda çalışma zamanı istisnası aldı – thekosmix

cevap

1

MultiDexApplication'u içe aktarmanız gerekiyor. İlk önce proguard'ı çıkardım ve ardından bu link'da bulduğum şeyle ilgili olan istisnayı gözlemledim. Lütfen ayrıntılı cevap için uğraşın.

2

Yeni Android yapılandırmalarıyla MultiDex'i etkinleştirmeye çalışın, yapı araçları 22.0.1'de MultiDex'te bildirdiğim bir hata oluştu (burada görebildiğiniz gibi: java.lang.VerifyError with API < 21).

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:multidex:1.0.1' 
} 

senin bağımlılıkları

compileSdkVersion 22 
buildToolsVersion "23 rc3" 

defaultConfig { 
    applicationId "x.x.x" 
    minSdkVersion 14 
    targetSdkVersion 22 
    versionCode 6 
    versionName "0.5" 
    multiDexEnabled = true 
} 
buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
} 

ithalat onu (son sürümü 1.0.1) Ve tabanına ekleyin:

Yani 23 rc3 gradle ve kullanım birikimi araçları MultiDex etkinleştirmek uygulamanızda bağlam:

public class MyApplication extends CustomLibraryApplication { 
    @Override 
    protected void attachBaseContext(Context base) { 
     super.attachBaseContext(base); 
     MultiDex.install(this); 
    } 
} 

Veya MultiDexApplication uzatmak:Veya manifest içinde bir MultiDexApplication kullanın.

+0

Aynı konuya sahibim ve bu benim için çalıştı. Özel uygulama sınıfını uygulamadan defaultConfig multiDexEnabled = true içinde bildirmiştim. Teşekkürler – fvasquezjatar

İlgili konular