我有一个应用程序模块(即我的应用程序)和一个名为api的Java库项目模块。我想在api模块中使用dagger 2,但注释处理器不起作用,dagger前缀类(例如DaggerApiComponent)未像预期那样生成。非常感谢任何帮助,并且是的,我正在使用gradle。
apply plugin: 'com.android.application'
插件时才可用。因此,在Java库中无法使用 com.android.application
插件时,您需要使用插件 apply plugin: "net.ltgt.apt"
。应用此插件后,您可以在依赖项块中使用dagger的编译器依赖项的apt配置 apt "com.google.dagger:dagger-compiler:2.0.2"
。此外,您需要 apply plugin: "idea"
使 net.ltgt.apt
正常工作,如果不应用idea插件,则注释处理器会生成dagger工厂类,但不会包含在IDE的sourceSet中,所以不要忘记应用idea插件。因此,我的构建脚本最终看起来像这样:buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "net.ltgt.gradle:gradle-apt-plugin:0.6"
}
}
apply plugin: 'java'
apply plugin: "net.ltgt.apt"
apply plugin: "idea"
dependencies {
// Dagger 2 and Compiler
compile 'com.google.dagger:dagger:2.0.2'
apt "com.google.dagger:dagger-compiler:2.0.2"
}
android-apt
插件(它被 Dagger 用于基于注解生成代码)仅适用于 Android 模块。 - micharelease
构建类型下时,问题才得以解决。切换到release
构建类型后,一切都神奇地开始正常工作了。我还使用了新版本构建工具中更新的annotationProcessor
。 - Hossain Khan