android-studio - Android 4.4 或更低版本上的 java.lang.NoClassDefFoundError

标签 android-studio

我有一个最近升级到 Gradle 构建系统的 Android 应用程序,例如使用更新版本的构建工具等。

我的 targetSdkVersion 是 19,所以我应该可以继续使用 Android 4.4 及更高版本。当我使用 5.0+ 设备运行时,一切都很好;然而,Android 4.4 总是崩溃并显示 java.lang.NoClassDefFoundError某种错误。

作为测试,我删除了它提示丢失的原始类,只是让它在指向不同的类时崩溃。

它崩溃的第一个类是 3rd 方库中的内部私有(private)类。删除该库后,它指向应用程序本身的内部私有(private)类。

总之:

  • 该应用程序在 Android 5.0+ 上运行良好。它与 java.lang.NoClassDefFoundError 一起崩溃在任何低于 5.0 的情况下。
  • 在迄今为止的测试中,NoClassDef 似乎总是指代一个内部类——这只是基于两个测试,所以它可能并不具体。

  • 这是我的 android.manifest 文件:https://gist.github.com/rscott78/19dd88ccde66172d9332

    最佳答案

    值得一提的是,当您启用多 dex 支持而不在 Application 类中添加正确的代码时,可能会发生这种情况。

    创建一个类,让它从 Application 继承,然后添加这个覆盖:

    @Override
    protected void attachBaseContext(Context base) {
      super.attachBaseContext(base);
      MultiDex.install(this);
    }
    

    在您的 AndroidManifest 中,添加 name属性到您的应用程序标签:
    <application name=".MyApplication"
    

    关于android-studio - Android 4.4 或更低版本上的 java.lang.NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32576482/

    相关文章:

    android - 如何修复 : HAXM silent installation only support mac OS X from 10. 8 到 10.10

    android - 为什么这会在 toast 消息中打印 0?

    android - java.lang.UnsatisfiedLinkError : Native method not found: org. opencv.imgproc.Imgproc.rectangle_1

    java - 无法在Android Studio中正确创建布局

    Android Studio 编译错误(Gradle)

    android - 如何找出 Android API 的默认行为/值?

    java - Android - Fragment 未替换

    android - Android Gradle实验和RenderScript实现

    android multidex 实现

    java - 在 Android Studio Canary 5 中将 Kotlin 恢复为 Java 代码