我们在构建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
?
尝试更新您的gradle插件。我已经看到在2.2.0
中,配置被完全忽略了。当我更新到2.3.3
时,它开始尊重我设定的规则。
例:
classpath com.android.tools.build:gradle:2.3.3
在我的默认配置中,我有这个设置:
multiDexEnabled true
multiDexKeepProguard file('proguard.multidex.config')
此外,您可能必须在反映更改之前执行干净构建。
我有同样的问题。我仍然不知道为什么。但是我找到了另一个解决方案,并且它有效。在app模块的build.gradle中添加dexOptions:
android {
dexOptions {
additionalParameters = ['--multi-dex',
'--set-max-idx-number=60000',
'--main-dex-list='+projectDir+'/your_multidexconfig.txt',
'--minimal-main-dex'
]
}
}