我们最近在使用 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)作为多索引处理的“入口点”的参考,但找不到足够的文档来说明该过程。
如果您能对此提供一些见解,那就太好了 - 这是您以前遇到过的问题吗?有已知的解决方法吗?您可以提供的有关我们如何实现“应用程序包装器”模式的任何详细信息也将不胜感激