【发布时间】:2017-01-23 16:28:04
【问题描述】:
我最近向我的应用程序添加了另一个依赖项,将其推到了 64k 限制并需要 Multidex。在 Android 4.x 上运行时,应用程序现在在启动时崩溃并出现 NoClassDefFoundError:
FATAL EXCEPTION: main
Process: org.naturenet.debug, PID: 3136
java.lang.NoClassDefFoundError: org.naturenet.util.ForestFire
at org.naturenet.NatureNetApplication.onCreate(NatureNetApplication.java:60)
此错误的其他情况表明这是因为 Multidex 未完全实现,但以下所有更改仍然会发生这种情况:
应用构建文件
dependencies {
compile 'com.android.support:multidex:1.0.1'
compile 'com.android.support:appcompat-v7:25.1.0'
compile 'com.android.support:support-v4:25.1.0'
...
}
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "org.naturenet"
minSdkVersion 16
targetSdkVersion 23
multiDexEnabled true
jackOptions {
enabled true
additionalParameters('jack.incremental': 'true')
}
}
}
应用类
public class NatureNetApplication extends MultiDexApplication {
有问题的 ForestFire 类没有改变。我最初在调试和发布源代码树下有不同的实现,但是用主源代码树中的单个文件替换它们没有区别。
【问题讨论】:
-
您是否尝试过清理并再次运行...或从首选项中关闭即时运行??
-
是的,我已经完成了完全重建并安装到新设备上。我没有使用即时运行。
-
这可能与 stackoverflow.com/q/39841778/213156 重复,但由于错误页面中建议的解决方法对我不起作用,我不确定。
-
你见过those instructions吗?你能告诉我
org.naturenet.util.ForestFire类是否放在 main-dex(a.k.a. classes.dex)中吗?如果是这样,那么问题可能会发生,因为org.naturenet.util.ForestFire依赖的类之一:在这种情况下,再次在 4.x 设备上运行并查找带有 dalvikvm 标记的日志条目(特别是带有 DexOpt 或 VFY 子字符串)。你看到什么相关的了吗? -
@AlexLipov 我没有,谢谢。我已经退出了 Java 8 和 Jack,现在它正在与 Multidex 一起工作,所以我认为它与遗留错误有关,但我也会尝试。