Android 使用multidex和Dagger 2时,应用程序对象中缺少函数

Android 使用multidex和Dagger 2时,应用程序对象中缺少函数,android,android-gradle-plugin,dagger-2,android-multidex,Android,Android Gradle Plugin,Dagger 2,Android Multidex,我们最近在多重索引方面遇到了问题,特别是在使用gradle多重索引插件(“com.android.support:multidex:1.0.0”)为Dalvik VM构建时 gradle似乎很难解析应该包含在主dex文件中的正确类。因此,我们最终得到了一个构建过程,该过程成功完成,但有时会生成一个主dex文件,其中不包含正确实例化主应用程序所需的一个或多个类(该类本身扩展了Multidex应用程序) 我们当前的解决方案是监视由multidex生成的中间文件,以强制执行一致构建。当我们有了一个好的

我们最近在多重索引方面遇到了问题,特别是在使用gradle多重索引插件(“com.android.support:multidex:1.0.0”)为Dalvik VM构建时

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

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

我们正在使用Dagger 2进行依赖项注入,我们怀疑这会以某种方式阻止multidex插件正确识别主应用程序的依赖项-这可能是原因吗?我们还遇到了使用最小的“应用程序包装器”(itslef扩展了MultiDexApplication)作为多重索引的“入口点”的各种引用,但找不到足够的文档来继续该过程


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

新的支持v4库中包含了multidex,您是否尝试过使用它

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

    compile "com.android.support:support-v4:$21.0.+"
并将此标志添加到gradle中的android>defaultConfig

android{
    defaultConfig{
        ....
        multiDexEnabled true
    }
}

我不知道支持库有多索引库。我正在使用多索引库本身。编译'com.android.support:multidex:1.0.0'有可能它们不一样吗?另一方面,我也在使用编译'com.android.support:support-v4:22.0.0'support lib本身是的,所以可能有冲突的multidex库。请尝试使用其中一个。更准确地说,support-v4库不包括多索引类。它们被打包在一个单独的库中,称为android support multidex。它的工作方式是,一旦指定multiDexEnabled=true,插件将自动添加multidex lib作为依赖项。