【问题标题】:java.lang.ClassNotFoundException without the name of the class没有类名的 java.lang.ClassNotFoundException
【发布时间】:2019-10-02 08:25:31
【问题描述】:

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

在 Google Play 控制台中,我看到旧 Android 版本 (

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

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)

这太笼统了,没有提示缺少什么类。

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

任何帮助都将在这里表示赞赏..

【问题讨论】:

    标签: android unity3d classnotfoundexception android-7.0-nougat android-7.1-nougat


    【解决方案1】:

    所以我找到了 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)
    

    这是您在 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]]
    

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

    【讨论】:

    • 我有完全同样的问题,在 Google Play 控制台中 ClassNotFoundException 没有类名。因此,基于您的成功,我集成了 Crashlytics。让我们明天看看我的 Firebase 控制台...
    • @Zotyi Firebase 是否向您展示了丢失的课程?
    • @qwiboo 我想是的,但是我在 Firebase 控制台的崩溃日志中只能返回 90 天,所以无法检查是哪一个
    • @Zotyi 我并不真正关心实际的课程。我只是想知道 Firebase Crashlytics 是否真的从日志中向您显示了更多信息,而不仅仅是 google play 控制台中的日志?
    • @qwiboo:是的,更详细
    【解决方案2】:

    这可能是多路复用问题。 在您的 build.gradle(模块级)中添加以下内容(如果还没有的话):

    android {
        defaultConfig {
            ...
            multiDexEnabled true
        }
        ...
    }
    
    dependencies {
      implementation 'com.android.support:multidex:1.0.3’
    }
    

    如果您的应用中没有应用程序类,请将其添加到清单中(在应用程序标签内):

    android:name="android.support.multidex.MultiDexApplication"
    

    如果你这样做,那么添加这个:

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

    Read more about it here

    【讨论】:

    • Multidex 已启用,但仅通过添加 multiDexEnabled 标志而不执行其他步骤。我已经读过,如果我的目标 android 版本大于 20,这是唯一需要的步骤(?)。也许 Unity 会完成剩下的工作。appmediation.com/unity-enable-multidex 不管怎样,Multidex 可以成为这个异常的来源吗?
    • @Ran 您的 minSdkVersion 需要高于 20 才能自动处理上述问题,而不是您的 targetSdkVersion。
    • 好的,我将更改我的 minSdkVersion。不确定这是否是问题的原因.. 阅读其他帖子似乎 AndroidX 库可能有问题
    猜你喜欢
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2019-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多