Android 匕首2:编译有时会失败

Android 匕首2:编译有时会失败,android,dagger-2,Android,Dagger 2,几个小时头痛之后。。。我不得不问你们^^ 有两个简单的Dagger 2组件,但都无法编译。但有时(我不明白为什么)它真的。。。 这真让人讨厌 所以我想我应该错过一些东西,这里是错误: 错误:(18,17)错误:……如果没有@Provides-或@products注释方法,则无法提供InstanceContextService。 home.HomeActivity.mInstanceContextService [类型的注入字段:……services.InstanceContextService

几个小时头痛之后。。。我不得不问你们^^

有两个简单的Dagger 2组件,但都无法编译。但有时(我不明白为什么)它真的。。。 这真让人讨厌

所以我想我应该错过一些东西,这里是错误:

错误:(18,17)错误:……如果没有@Provides-或@products注释方法,则无法提供InstanceContextService。 home.HomeActivity.mInstanceContextService [类型的注入字段:……services.InstanceContextService mInstanceContextService]

所以我的成分是这样的:

@Component(modules = {InstanceContextModule.class})
@Singleton
public interface InstanceContextComponent {

    @Singleton
    void inject(HomeActivity activity);
    }
我的模块:

@Module
public class InstanceContextModule {

    @Provides
    @Singleton
    public InstanceContextService provideInstanceContext() {
        return new FileInstanceService();
    }
}
我在gradle的配置是

apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'
apply plugin: 'com.neenbedankt.android-apt'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
//    compileOptions.incremental = false

    defaultConfig {
        applicationId "com.kayentis.ediary"
        minSdkVersion 17
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    sourceSets {
        main {
            res.srcDirs = [
                    'src/main/res',
                    'src/main/res-main',
                    'src/main/res-message',
                    'src/main/res-account'
            ]
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'com.android.support:support-v13:23.1.+'
    compile 'com.google.code.gson:gson:2.1'
    //compile 'com.google.protobuf:protobuf-java:2.6.1'

    //Dagger 2
//    apt  'com.google.dagger:dagger-compiler:2.3'
//    compile 'com.google.dagger:dagger:2.3'
    apt 'com.google.dagger:dagger-compiler:2.0.2'
    compile 'com.google.dagger:dagger:2.0.2'
    provided 'org.glassfish:javax.annotation:10.0-b28'
    //Retrofit 2.0
    compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'
    //RxJava
    compile 'io.reactivex:rxjava:1.1.0'
    compile 'io.reactivex:rxandroid:1.1.0'
    //ButterKnife
//    compile 'com.jakewharton:butterknife:7.0.1'
}
我到处找,但我想我错过了什么。。。 提前感谢^ ^

找到了解决方案


有两个组件具有@singleton作用域模块,因此这无法工作。现在它的建设成功了

对于注释,我仍然存在删除一个组件的错误,但我可以转到生成的类。因此,类是生成的,但编译似乎在javaCif中看不到它。如果使用字段注入,组件必须能够解析要注入的所有依赖项(从其模块)。