没有类名的 java.lang.ClassNotFoundException

Ran*_*Ran 4 android unity-game-engine classnotfoundexception android-7.0-nougat android-7.1-nougat

我有一个部署到 Android 的 Unity 游戏。

在 Google Play 控制台中,我看到许多在旧 Android 版本 (<=7.1) 上发生的崩溃。崩溃是由 ClassNotFoundException 引起的,但报告没有显示未找到的类。

在崩溃控制台中,我得到以下堆栈跟踪:

java.lang.RuntimeException: 
  at android.app.ActivityThread.handleReceiver (ActivityThread.java:3025)
  at android.app.ActivityThread.-wrap18 (ActivityThread.java)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1565)
  at android.os.Handler.dispatchMessage (Handler.java:102)
  at android.os.Looper.loop (Looper.java:179)
  at android.app.ActivityThread.main (ActivityThread.java:6152)
  at java.lang.reflect.Method.invoke (Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:886)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:776)
Caused by: java.lang.ClassNotFoundException: 
  at dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:56)
  at java.lang.ClassLoader.loadClass (ClassLoader.java:380)
  at java.lang.ClassLoader.loadClass (ClassLoader.java:312)
  at android.app.ActivityThread.handleReceiver (ActivityThread.java:3020)
Run Code Online (Sandbox Code Playgroud)

这太通用了,并没有暗示缺少什么类。

我想知道是否有另一种方法可以找到丢失的课程。我正在使用 Multidex(我不知道它是否与问题有关)。

任何帮助将不胜感激在这里..

Ran*_*Ran 5

所以我找到了 ClassNotFoundException 的原因,这不是 multidex 配置,而是我的一个插件添加到清单中的接收器,其中包含一个未包含在项目中的类。

更重要的是我是如何找到它的,这可以帮助其他人.. 如果它是多行消息,Google Play 控制台似乎不会显示整个异常数据。我已经安装了 Firebase Crashlytics,并在几个小时内得到了实际丢失的类​​。

这是您在 Google Play 控制台中获得的内容:

Caused by: java.lang.ClassNotFoundException: 
  at dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:56)
  at java.lang.ClassLoader.loadClass (ClassLoader.java:380)
  at java.lang.ClassLoader.loadClass (ClassLoader.java:312)
  at android.app.ActivityThread.handleReceiver (ActivityThread.java:3049)
Run Code Online (Sandbox Code Playgroud)

这是您在 Firebase Crashlytics 中获得的内容:

Caused by java.lang.ClassNotFoundException
Didn't find class "com.mintegral.msdk.click.AppReceiver" on path: DexPathList[[zip file "/data/app/com.bbumgames.spadesroyale-1/base.apk", zip file "/data/app/com.bbumgames.spadesroyale-1/split_config.arm64_v8a.apk"],nativeLibraryDirectories=[/data/app/com.bbumgames.spadesroyale-1/lib/arm64, /data/app/com.bbumgames.spadesroyale-1/base.apk!/lib/arm64-v8a, /data/app/com.bbumgames.spadesroyale-1/split_config.arm64_v8a.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]
Run Code Online (Sandbox Code Playgroud)

我不确定为什么谷歌没有显示第二行,对我来说似乎是一个错误,但无论如何,我的问题现在已经解决了。