我尝试在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'
}
答案 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和实现配置提供的保证。