具有与编译 sdk 版本不兼容的支持库的影响
Effect of having incompatible support library with compile sdk version
我有一个 Android 的 air 应用程序,我已经集成了 google play services 12.0.0 以显示插页式和奖励视频广告。应用程序没有 multidex。上次发布后,我在 Play Store Console 中有以下崩溃日志。崩溃日志对我没有太大帮助,并不是说找不到 class 名称。我跟踪了代码并试图找出相关的包,现在我怀疑支持库 (23.4.0) 与 CompileSdkVersion(27) 不兼容。这可能是造成这种错误的原因吗?
java.lang.NoClassDefFoundError:
at com.google.android.gms.common.util.zzf.zza (Unknown Source)
at com.google.android.gms.common.util.zzf.zza (Unknown Source)
at com.google.android.gms.internal.zzyd.<clinit> (Unknown Source)
at com.google.android.gms.internal.zzaog.zza (Unknown Source)
at com.google.android.gms.ads.internal.zzak.zza (Unknown Source)
at com.google.android.gms.ads.internal.zzl.run (Unknown Source)
at android.os.Handler.handleCallback (Handler.java:739)
at android.os.Handler.dispatchMessage (Handler.java:95)
at android.os.Looper.loop (Looper.java:148)
at android.app.ActivityThread.main (ActivityThread.java:7325)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1120)
Caused by: java.lang.ClassNotFoundException:
at dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass (ClassLoader.java:511)
at java.lang.ClassLoader.loadClass (ClassLoader.java:469)
用 Android Studio 分析 apk 文件后,我发现 android.support.v4.util.ArraySet 不在 apk 文件中,Google Play Services Ads 12.0.0 是使用这种方法。 ArraySet 在 25.1.0 版本中添加了支持库。所以,将支持库更新到 25.1.1 解决了我的问题。
//compile(name: 'support-v4-24.1.1', ext:'aar')
compile "com.android.support:support-v4:25.1.1"
问题发生在我的 Unity 项目中。我使用了第三方admob插件,在我做了上面的更改后,解决了我的问题
我有一个 Android 的 air 应用程序,我已经集成了 google play services 12.0.0 以显示插页式和奖励视频广告。应用程序没有 multidex。上次发布后,我在 Play Store Console 中有以下崩溃日志。崩溃日志对我没有太大帮助,并不是说找不到 class 名称。我跟踪了代码并试图找出相关的包,现在我怀疑支持库 (23.4.0) 与 CompileSdkVersion(27) 不兼容。这可能是造成这种错误的原因吗?
java.lang.NoClassDefFoundError:
at com.google.android.gms.common.util.zzf.zza (Unknown Source)
at com.google.android.gms.common.util.zzf.zza (Unknown Source)
at com.google.android.gms.internal.zzyd.<clinit> (Unknown Source)
at com.google.android.gms.internal.zzaog.zza (Unknown Source)
at com.google.android.gms.ads.internal.zzak.zza (Unknown Source)
at com.google.android.gms.ads.internal.zzl.run (Unknown Source)
at android.os.Handler.handleCallback (Handler.java:739)
at android.os.Handler.dispatchMessage (Handler.java:95)
at android.os.Looper.loop (Looper.java:148)
at android.app.ActivityThread.main (ActivityThread.java:7325)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1120)
Caused by: java.lang.ClassNotFoundException:
at dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass (ClassLoader.java:511)
at java.lang.ClassLoader.loadClass (ClassLoader.java:469)
用 Android Studio 分析 apk 文件后,我发现 android.support.v4.util.ArraySet 不在 apk 文件中,Google Play Services Ads 12.0.0 是使用这种方法。 ArraySet 在 25.1.0 版本中添加了支持库。所以,将支持库更新到 25.1.1 解决了我的问题。
//compile(name: 'support-v4-24.1.1', ext:'aar')
compile "com.android.support:support-v4:25.1.1"
问题发生在我的 Unity 项目中。我使用了第三方admob插件,在我做了上面的更改后,解决了我的问题