【问题标题】:android : NoClassDefFoundError for android 4.4 and belowandroid:适用于 android 4.4 及更低版本的 NoClassDefFoundError
【发布时间】:2016-04-27 12:31:37
【问题描述】:

我的应用为 sdk 19 或更低版本提供 NoClassDefFoundError。 我在我的毕业典礼上

 android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"
    defaultConfig {
        applicationId "com.idg.mail"
        minSdkVersion 14
        targetSdkVersion 23
        multiDexEnabled = true
    }

现在我尝试将其更改为

compileSdkVersion 19
    buildToolsVersion "23.0.1"
    defaultConfig {
        applicationId "com.idg.gatcamail"
        minSdkVersion 19
        targetSdkVersion 19
        multiDexEnabled = true
    }

我也更改了app-> module settings - android - sdk。 通过这些更改,我构建了项目,但它仍然在我的 android 4.4 上给出了相同的错误,并且它在更高版本上运行。

该类是在我处理网络操作的代码中定义的类。

如何调试这个问题

【问题讨论】:

  • 对于什么类有例外?
  • 它是我定义的一个 java 类,主要完成从服务器获取数据的工作
  • 这也可能是由multiDexEnabled 选项引起的。您确定必须将其设置为 true 以及依赖项是什么?
  • @preetha,在您的清单中,您使用的是哪个应用程序标签?

标签: android noclassdeffounderror android-4.4-kitkat


【解决方案1】:

我几乎可以肯定这是多索引问题。如果它在 sdk 21 上正常运行 - 这是 multidex 问题。

这里是官方信息:Multidex

如果您使用自定义应用程序类的实现,它必须扩展 MultiDexApplication 类。还需要 gradle 标志。如果您不使用自定义 Application 类,只需添加清单中提供的条目 - 它在文档中进行了描述。

编辑:差点忘了 - 你必须添加依赖项,这个库提供了 multidex:compile 'com.android.support:multidex:1.0.1'

【讨论】:

  • @Tuff,是的,你可以
  • 我已经有了 gradle 标志,但应用程序类没有改变。如何在 > sdk-21 上工作。有了这个变化,它在两个版本上都可以工作..但是在更高版本上它是如何工作的
  • @preetha Multidex 是 Dalvik 问题,在 Android 5+ 上有 ART 而不是 Dalvik。所以在 api 21+ 上没有 64k 方法限制:)
  • 但是如果我没有在 gradle 中设置这些标志,我没有记错的话,即使是更高版本,我也会遇到错误。 dex 相关。那是我设置标志的地方。正常吗
  • 我不记得了,但我认为它与minSdk值有关,它必须设置为21
猜你喜欢
  • 2016-09-10
  • 1970-01-01
  • 2018-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-10
相关资源
最近更新 更多