Внедрение Google Analytics 7.5.0 (Play Services) в Android 4.4 и ниже происходит сбой

После того, как я внедрил Google Analytics, мое приложение мгновенно сработало на устройствах старше Lollipop.

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.xxxonCreate(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) 

Мой файл Gradle (внутри блока android):

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

Я использую эту версию Google Play Services:

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

Я много раз искал в Интернете по этой теме, но не смог найти ничего, что могло бы решить проблему. Ближайшим был этот ответ на SO, к сожалению, для меня это не сработало: https://stackoverflow.com/a/31432568

Попробуйте включить MultiDex с новыми конфигурациями Android, у сборников 22.0.1 была ошибка, о которой я сообщал в MultiDex (как вы можете видеть здесь: java.lang.VerifyError с API <21 ).

Поэтому включите MultiDex в градиенте и используйте встроенные инструменты 23 rc3:

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

Импортируйте его в свои зависимости (последняя версия 1.0.1)

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

И приложите его к своему базовому контексту в своем приложении:

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

Или расширьте MultiDexApplication:

 public class MyApplication extends MultiDexApplication { } 

Или используйте манифест MultiDexApplication.

Кажется, вам нужно импортировать MultiDexApplication . Я сначала удалил proguard, а затем заметил исключение, которое было связано с тем, что я нашел в этой ссылке . Пожалуйста, пройдите через это для подробного ответа.