关于dagger2的生成速度问题

2017-11-11  本文已影响53人  做人要简单

前言

关于dagger2怎么使用的技术性文章就不说了,毕竟网上这样的很多

推荐个:
Dagger2从入门到放弃再到恍然大悟

我这里想说的是,大家如果在使用dagger的话 都用的是android studio开发

应该都是用的gradle构建

dagger需要使用DaggerXXXComponent 来inject 实现具体的绑定注入
这个类的不是实时编译的,大家通常都是使用sync gradle 的方式或者make project的方式来生成文件

而dagger虽然sync下gradle就能自动生成类了,但是大家有没有想过,gradle全部同步可能需要的时间会随着项目越来越大,project中的module越来越多而更慢,那么单独同步dagger肯定要快很多,所以这就是我这篇文章的意义所在了

关于gradle构建

gradle构建其中存在的就是各种task,那么生成文件也一定是一个task了
如果sync gradle的话会将很多task都执行一次,而我们只需要执行对应的task生成dagger就可以了,那么怎么单独使用呢

两个方式:一个是命令行,一个是图形化界面

大部分人都比较懒,虽然命令行也许更快,但是咱们还是用AS提供的图形化界面吧

image.png

这里有个gradle,其中就是构件整个项目包含的task了

因为我用的是kotlin语言,所以这里用的是kapt插件生成,而java的话应该是apt或者androidProcessor

我这里用的是kapt插件,找到module对应的名称,然后展开other

image.png

然后输入kapt

image.png

找到了,双击一下,就开始执行了

image.png

这里一般是增量编译,第一次会比较慢,后续就很快了
我的项目首次完整的运行app项目需要3分钟左右,这里单独执行这个task需要1分钟 后续大概在10s左右

写好了一个简单的module和Component


image.png

这个时候还没有生成依赖
接着双击当时的gradle

image.png

发现已经有继承了,这个时候就可以注入代码了

保存task

image.png

在运行那里,点save,保存这个task的快捷方式,接着看图

image.png

这里就发现,暗色变成了亮色,以后就不用再到右边去找了

关于java的方式

这里因为我没有用java写项目,所以不知道java的task名称是什么,不过应该是apt,androidProcessor之类开头的吧,还用java的同学自己尝试下吧

洗个脑

kotlin大法好,快来用吧! 比java感觉舒服很多,主要是省代码量,

不过不得不说其实as中 java的代码提示比kotlin还是要强很多,虽然kotlin是

上一篇 下一篇

猜你喜欢

热点阅读