2

我们最近在使用 Multidexing 时遇到了问题,特别是在使用 gradle multidex 插件 ('com.android.support:multidex:1.0.0') 为 Dalvik VM 构建时。

似乎 gradle 难以解析应该包含在主 dex 文件中的正确类。结果,我们最终得到了一个成功完成的构建过程,但有时会生成一个主 dex 文件,其中不包含正确实例化主应用程序所需的一个或多个类(它本身扩展了 MultiDexApplication)。

我们当前蛮力一致构建的解决方案是监控由 multidex 生成的中间文件。当我们有一个好的构建(即正确实例化主应用程序和 MultiDexApplication 的构建),然后将包含在主 dex 文件中的类列表复制到一个文件中,然后我们强制使用 multidex(使用 --main -dex-list 参数)。这暂时使我们能够将所需的类“强制”到主 dex 文件中,但显然不是很可维护,并且在添加新类/依赖项时无法轻松更新。

我们正在使用 Dagger 2 进行依赖注入,我们怀疑这会以某种方式阻止 multidex 插件正确识别主 App 的依赖项——这可能是原因吗?我们还遇到了各种关于使用最小的“App Wrapper”(其本身扩展 MultiDexApplication)作为多索引处理的“入口点”的参考,但找不到足够的文档来说明该过程。

如果您能对此提供一些见解,那就太好了 - 这是您以前遇到过的问题吗?有已知的解决方法吗?您可以提供的有关我们如何实现“应用程序包装器”模式的任何详细信息也将不胜感激

4

1 回答 1

2

新的 support v4 库包含了 multidex,你尝试过使用它吗?

将以下内容添加到您的 gradle 依赖项中:

    compile "com.android.support:support-v4:$21.0.+"

并将这个标志添加到你的 android > defaultConfig in gradle

android{
    defaultConfig{
        ....
        multiDexEnabled true
    }
}
于 2015-05-27T01:02:46.500 回答