Android 4.4或更低版本的java.lang.NoClassDefFoundError

bug*_*ixr 11 android-studio

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

我的targetSdkVersion是19,所以我应该更好地使用Android 4.4及更高版本.当我使用5.0+设备运行时,一切都很好; 但Android 4.4总是会因某种java.lang.NoClassDefFoundError错误而崩溃.

作为一个测试,我删除了它抱怨失踪的原始类只是让它在指向另一个类时崩溃.

它崩溃的第一个类是第三方库中的内部私有类.删除该库后,它指向应用程序本身的内部私有类.

综上所述:

  • 该应用程序在Android 5.0+上正常运行.它会java.lang.NoClassDefFoundError在低于5.0的任何事情上崩溃.
  • 在目前为止的测试中,NoClassDef似乎总是引用一个内部类 - 这只是基于两个测试,所以它可能不是具体的.

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

bug*_*ixr 26

对于它的价值,当你启用multi-dex支持而不在Application类中添加正确的代码时,就会发生这种情况.

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

@Override
protected void attachBaseContext(Context base) {
  super.attachBaseContext(base);
  MultiDex.install(this);
}
Run Code Online (Sandbox Code Playgroud)

在AndroidManifest中,name为应用程序标记添加一个属性:

<application name=".MyApplication"
Run Code Online (Sandbox Code Playgroud)