我在我的一个 android 库中使用 dagger2。完成库项目后,我使用 gradle uploadArchive
将 aar 上传到 maven 仓库。然后在应用程序项目中使用 compile group:artifect:version@aar
语法来使用库项目。我在构建应用程序时没有问题,但在运行时,它会为生成我的 Dagger2 的类 MyModule_ProvideAppFactory
抛出 NoClassDefFoundError
。我认为此类是为方法 @Provides public Application provideApp()
生成的。然而生成的 DaggerMyComponent
可以在运行时找到,因为异常发生在 DaggerMyComponent
类中。
我什至在应用程序项目中包含了以下依赖项
compile 'com.google.dagger:dagger:2.0'
compile 'javax.annotation:jsr250-api:1.0'
但是问题依然存在。我很确定不是因为 65K 方法限制
问题,因为我们在应用程序项目中启用了 multidex。我不确定我错过了什么,或者 Dagger2 可以这样使用吗?
最佳答案
原来我遗漏了 Dagger2 生成的类所需的另一个依赖项。
添加
编译'javax.inject:javax.inject:1'
到 gradle 文件,它工作正常。
关于java - 在 android 库项目中使用 Dagger2 在运行时抛出 `NoClassDefFoundError`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34485604/