繁体   English   中英

Dagger2注解处理器无法正常工作

[英]Dagger2 annotation processor is not working

我尝试在我的Android项目中使用Dagger2; 当我使用apt时,一切都是正确的。但是AndroidStudio 3.0不支持apt,因此我使用注释处理器。但是,单击“ Make Project”后,没有创建Dagger2代码; 而且我确定在AndroidStudio中启用了注释处理,因为Butterknife注释处理器可以。 以下是build.gradle:

dependencies {
    annotationProcessor 'com.google.dagger:dagger-android-processor:2.13'
    compile 'com.google.dagger:dagger-android:2.13'
    compile 'com.google.dagger:dagger-android-support:2.13'
    compile 'com.jakewharton:butterknife:8.6.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.6.0'
}

在android studio 3.0版本中使用它

implementation 'com.google.dagger:dagger:2.9'
annotationProcessor 'com.google.dagger:dagger-compiler:2.9'

这些是Andriod Studio 3.0中对dagger2和butter的依赖

  //ButterKniffe
compile "com.jakewharton:butterknife:8.8.1"
kapt "com.jakewharton:butterknife-compiler:8.8.1"

//dagger
compile "com.google.dagger:dagger:$dagger_version"
kapt "com.google.dagger:dagger-compiler:$dagger_version"

这是Google在IO17 gradle:3.0中宣布的 gradle:3.0带来的重大变化之一。

编译配置现已弃用 ,应由实现api替换。gradle docs中

api配置中出现的依赖项将传递给库的使用者,并因此而出现在使用者的编译类路径上。

另一方面,在实现配置中找到的依赖项不会暴露给使用者,因此不会泄漏到使用者的编译类路径中。 这有几个好处:

  • 列表项的依赖关系不会再泄漏到使用者的编译类路径中,因此您永远不会意外地依赖于传递性依赖关系
  • 减少类路径大小,加快了编译速度
  • 实施依赖项发生更改时,重新编译次数更少:无需重新编译使用者
  • 更清洁的发布:与新的maven-publish插件一起使用时,Java库生成的POM文件可准确区分针对该库进行编译所需的内容和在运行时使用该库所需的内容(换句话说,不要混合编译库本身所需的内容和对库进行编译所需的内容)。

编译配置仍然存在,但不应使用,因为它不能提供api和实现配置所提供的保证。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM