我在我的一个Android库中使用了dagger2。完成库项目后,我使用gradle uploadArchive
将aar上传到maven repo。然后在app项目中使用compile group:artifect:version@aar
语法来使用库项目。我在构建应用程序时没有问题,但在运行时,它会为生成我的Dagger2的类NoClassDefFoundError
抛出MyModule_ProvideAppFactory
。我认为这个类是为方法@Provides public Application provideApp()
生成的。然而,生成的DaggerMyComponent
可以在运行时找到,因为异常发生在DaggerMyComponent
类中。
我甚至在app项目中包含了以下依赖项
compile 'com.google.dagger:dagger:2.0'
compile 'javax.annotation:jsr250-api:1.0'
然而问题仍然存在。我很确定不是因为65K method limits
问题,因为我们在应用项目中启用了multidex。我不确定我错过了什么,或者Dagger2可以这样使用?
答案 0 :(得分:2)
原来我错过了Dagger2生成的类所需的另一个依赖项。
加
compile 'javax.inject:javax.inject:1'
到gradle文件,它工作正常。