Dagger2入坑指南

之前使用过dagger1,今天试用了一下dagger2,上来就发现两个坑。

坑1

刚写完一个简单的demo,编译就会报错,提示javax.annotation不存在。
解决方法是在build.gradle里面添加依赖。

provided 'org.glassfish:javax.annotation:10.0-b28'

原因分析:dagger2会在编译的时候生成一些.java文件,里面会有个@Generated注解,这个注解是javax.annotation包中的。

坑2

这时候编译通过了,注入的时候你需要引用一个dagger2编译时生成的Component class,然而这class你根本引用不到,经过搜索发现,dagger2的compiler不能用provided依赖,需要使用android-apt的插件,用apt关键字依赖。

apt 'com.google.dagger:dagger-compiler:2.0.1'

原因分析:用provided的话,dagger2生成的class在build/intermediates目录中,这里面的class我们不能直接引用到,但是打包的时候会打包进去,也就是运行时是可以引用到的,但是我们的开发环境中引用不到,这里可以通过反射调用。然而使用apt插件后,dagger2生成的class在build/generated目录中,在这个目录中的class我们可以直接引用到,比如R文件也是在这个目录里面。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,095评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,268评论 25 709
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,148评论 6 342
  • 整整两年没出门了,最多就是花费半小时出门上班。这次去省城,相比要来回返程,有点吃力。 大家都爱干双赢的事,我也不例...
    蝉翼呵呵阅读 1,589评论 0 0
  • 陈文龙,现居北京,祖籍甘肃天水,2012年毕业于西北民族大学,获得文学学士学位,曾从事教育,企业等多个行业,丰富的...
    陈文龙甘肃阅读 3,003评论 0 1

友情链接更多精彩内容