我们在构建multidex App时遇到了问题。我们在应用程序启动期间不断收到不同的java.lang.NoClassDefFoundError
错误。
我们注意到它们很可能与multidex问题有关。由于引导应用程序所需的类必须存在于主DEX文件中,并且它们未包含在classes.dex
中。我们执行了https://developer.android.com/studio/build/multidex.html#keep中描述的步骤
但是我们在multidex-config.txt
中指定的类,甚至multidex-config.pro
中指定的类都没有放在主要的dex文件中(classes.dex
)。
您是否有使用multiDexKeepFile
或multiDexKeepProguard的经验?它真的有效吗?是否有任何技巧可以使其工作并将文件放在classes.dex
?
答案 0 :(得分:3)
尝试更新您的gradle插件。我已经看到2.2.0
中的配置完全被忽略了。当我更新到2.3.3
时,它开始尊重我设定的规则。
示例:
classpath com.android.tools.build:gradle:2.3.3
在我的默认配置中,我有这个设置:
multiDexEnabled true
multiDexKeepProguard file('proguard.multidex.config')
在反映更改之前,您可能还需要进行干净的构建。
答案 1 :(得分:0)
我有同样的问题。我仍然不知道为什么。 但是我找到了另一种解决方案,它可行。 在您的应用模块的build.gradle中添加dexOptions:
android {
dexOptions {
additionalParameters = ['--multi-dex',
'--set-max-idx-number=60000',
'--main-dex-list='+projectDir+'/your_multidexconfig.txt',
'--minimal-main-dex'
]
}
}
答案 2 :(得分:0)
您应该检查minSdkVersion
,如果您的minSdkVersion
> = 21,则不支持multiDexKeepProguard
。因为默认情况下,构建工具会进行dex拆分。
更多详细信息: