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

时间:2017-12-06 03:46:18

标签: android dagger

我尝试在Android项目中使用Dagger2; 当我使用apt时,每件事情都是正确的。但AndroidStudio 3.0不支持apt,所以我使用注释处理器。但是在点击“Make Project”后没有创建Dagger2代码; 而且我确信在AndroidStudio中启用了annotetion处理,因为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'
}

3 个答案:

答案 0 :(得分:1)

在android studio 3.0版本中使用它

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

答案 1 :(得分:0)

这些是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"

答案 2 :(得分:0)

这是gradle中的一个重大变化:3.0 Google announced at IO17 gradle:3.0

编译配置为now deprecated,应替换为实施 api 来自gradle docs

  

api配置中出现的依赖关系将被传递给库的消费者,因此将出现在消费者的编译类路径中。

     另一方面,在实施配置中发现的依赖性将不会暴露给消费者,因此不会泄漏到消费者手中。编译类路径。这有几个好处:

     
      
  • 列表项依赖项不再泄漏到消费者的编译类路径中,因此您永远不会意外地依赖于传递依赖
  •   
  • 由于减少了类路径大小,编译速度更快
  •   
  • 当实现依赖关系发生变化时,重新编译的次数减少:消费者不需要重新编译
  •   
  • 清洁发布:当与新的maven-publish插件结合使用时,Java库会生成POM文件,这些文件准确区分编译库所需的内容和在运行时使用库所需的内容(换句话说,不要混合编译库本身所需的内容以及编译库所需的内容。
  •   
     

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