【问题标题】:Implementing Google Analytics 7.5.0 (Play Services) in Android 4.4 and below crashes在 Android 4.4 及更低版本中实施 Google Analytics 7.5.0(播放服务)崩溃
【发布时间】:2015-10-13 07:28:06
【问题描述】:

在我实施 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.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)

我的 Gradle 文件(在 android 块内):

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'
    }
}

我使用这个版本的 Google Play 服务:

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

我已经在网上搜索了很多关于此主题的内容,但找不到任何解决问题的方法。最接近的是 SO 上的这个答案,不幸的是它对我没有用:https://stackoverflow.com/a/31432568

【问题讨论】:

  • 您是否在其他地方声明了 google play 服务?当您编译整个库而不仅仅是分析 com.google.android.gms:play-services:7.5.0 时会发生什么?
  • @Leander 你找到解决办法了吗?
  • @Andy 不,我没有在其他任何地方声明播放服务。我的应用程序已正确编译并在棒棒糖之前的设备上收到运行时异常
  • 看看这个页面以获得明确的信息stackoverflow.com/questions/33196015/…

标签: android google-analytics google-play-services


【解决方案1】:

看来您必须导入MultiDexApplication。我首先删除了proguard,然后观察到异常,这与我在这个link 中发现的有关。请仔细阅读以获得详细的答案。

【讨论】:

    【解决方案2】:

    尝试使用新的 Android 配置启用 MultiDex,build-tools 22.0.1 有一个我在 MultiDex 上报告的错误(如您在此处看到的:java.lang.VerifyError with API < 21)。

    所以在 gradle 中启用 MultiDex 并使用 build-tools 23 rc3:

    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'
        }
    }
    

    在你的依赖项中导入它(最新版本是 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。

    【讨论】:

    • 我有同样的问题,这对我有用。我在 defaultConfig multiDexEnabled = true 中声明了没有实现自定义应用程序类。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-24
    • 1970-01-01
    • 2017-01-17
    相关资源
    最近更新 更多