multiDexKeepFile 不起作用

Nad*_*ira 8 android android-build android-multidex

我们在构建 multidex 应用程序时遇到问题。我们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?

Tra*_*llo 3

尝试更新你的 gradle 插件。我发现2.2.0配置中的这一点被完全忽略了。当我更新到2.3.3它时,我开始尊重我设定的规则。

例子:

classpath com.android.tools.build:gradle:2.3.3
Run Code Online (Sandbox Code Playgroud)

在我的默认配置中,我有这样的设置:

    multiDexEnabled true
    multiDexKeepProguard file('proguard.multidex.config')
Run Code Online (Sandbox Code Playgroud)

此外,您可能必须在反映更改之前进行干净的构建。

  • 我正在使用(当前)最新的 gradle 插件版本 - `classpath 'com.android.tools.build:gradle:3.5.3'`,但仍然遇到 OP 的问题。另外,通过检查我的 apk ( https://developer.android.com/studio/build/apk-analyzer ),我看到我通过 `multiDexKeepFeel` 指定的类存在于 **classes2.dex** 中,而不是存在于*主* dex 文件,**classes.dex**。 (3认同)