multiDexKeepFile无效

时间:2017-05-11 01:33:23

标签: android android-build multidex android-multidex

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

3 个答案:

答案 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拆分。

更多详细信息:

https://developer.android.com/studio/build/multidex