multiDexKeepFile无效

问题描述 投票:4回答:2

我们在构建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

android android-build multidex android-multidex
2个回答
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
投票

我有同样的问题。我仍然不知道为什么。但是我找到了另一个解决方案,并且它有效。在app模块的build.gradle中添加dexOptions:

android {
    dexOptions {
        additionalParameters = ['--multi-dex',
                                '--set-max-idx-number=60000',
                                '--main-dex-list='+projectDir+'/your_multidexconfig.txt',
                                '--minimal-main-dex'
        ]
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.