我们最近在使用Multidexing时遇到了问题,特别是在使用gradle multidex插件构建Dalvik VM时(' com.android.support:multidex:1.0.0')。
似乎gradle难以解析应包含在主dex文件中的正确类。因此,我们最终成功完成了构建过程,但有时会生成一个主要的dex文件,该文件不包含正确实例化主应用程序所需的类或类(它本身会扩展) MultiDexApplication)。
我们目前解决暴力破解的问题是监控multidex生成的中间文件。当我们有一个良好的构建(即正确实例化主应用程序并因此实现MultiDexApplication)时,然后将主要dex文件中包含的类列表复制到一个文件中,然后我们强制使用multidex使用(使用--main-dex-list参数)。这暂时使我们能够“强迫”#39;主要dex文件中所需的类,但显然不是很易于维护,并且在添加新的类/依赖项时无法轻松更新。
我们正在使用Dagger 2进行依赖注入,我们怀疑这是以某种方式阻止multidex插件正确识别主App的依赖 - 这可能是可能的原因吗?我们还提到了使用最小的App Wrapper' (其中,它扩展了MultiDexApplication)作为“入口点”。对于多索引,但无法找到有关该过程的充分文档。
如果您能对此提供一些见解会很棒 - 这是您之前遇到的问题吗?有一个已知的解决方法吗?您可以提供有关我们如何实施应用程序包装的任何详细信息。模式也将非常感激
答案 0 :(得分:2)
新的支持v4库包含了多索引,您是否尝试过使用它?
将以下内容添加到您的gradle依赖项:
compile "com.android.support:support-v4:$21.0.+"
并将此标志添加到您的Android> gradle中的defaultConfig
android{
defaultConfig{
....
multiDexEnabled true
}
}