我正在努力在现有应用程序中设置 Dagger (1.0.1)。它被配置为使用 ProGuard,但我为这个测试禁用了它-dontobfuscate
。
当我启用 dagger-compiler 时,它能够成功地生成一个带有依赖关系图的点文件,但是当我删除编译器并在发布模式下构建应用程序时,它在启动过程中崩溃,抱怨它无法创建对象图。
java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.corp.myapp/com.corp.myapp.ui.activity.MainActivity}:
java.lang.IllegalStateException: Errors creating object graph:
No injectable members on com.corp.myapp.core.services.ConnectionMonitor. Do
you want to add an injectable constructor? required by
com.corp.myapp.core.services.ConnectionMonitor
com.corp.myapp.ui.activity.MyAppBaseActivity.connectionManager
No injectable members on com.corp.myapp.ui.crouton.CroutonManager. Do you want
to add an injectable constructor? required by
com.corp.myapp.ui.crouton.CroutonManager
com.corp.myapp.ui.activity.MyAppBaseActivity.croutonManager
No injectable members on com.corp.core.assembler.ResourceAssembler. Do you want
to add an injectable constructor? required by
com.corp.core.assembler.ResourceAssembler
com.corp.myapp.ui.activity.MyAppBaseActivity.resourceAssembler
我看到MyAppBaseActivity
它与生成的点文件的依赖关系CroutonManager
或ConnectionMonitor
显示在生成的点文件中,所以根据这个评论,我希望这可以工作。AFAIK 如果有问题,应该由我用来生成点文件的启用编译器的构建检测到。
更新:
我之前说过
在调试模式下它永远不会失败
但经过进一步测试后并非如此:在调试模式下它不会失败,因为 ProGuard 被禁用,而在发布模式下它默认启用。如果我在 Release 模式下构建应用程序但跳过 ProGuard,我也不会收到错误并且应用程序成功启动。所以这个问题肯定和我的 ProGuard 配置有关。