Android 匕首2:编译有时会失败
几个小时头痛之后。。。我不得不问你们^^ 有两个简单的Dagger 2组件,但都无法编译。但有时(我不明白为什么)它真的。。。 这真让人讨厌 所以我想我应该错过一些东西,这里是错误: 错误:(18,17)错误:……如果没有@Provides-或@products注释方法,则无法提供InstanceContextService。 home.HomeActivity.mInstanceContextService [类型的注入字段:……services.InstanceContextService mInstanceContextService] 所以我的成分是这样的:Android 匕首2:编译有时会失败,android,dagger-2,Android,Dagger 2,几个小时头痛之后。。。我不得不问你们^^ 有两个简单的Dagger 2组件,但都无法编译。但有时(我不明白为什么)它真的。。。 这真让人讨厌 所以我想我应该错过一些东西,这里是错误: 错误:(18,17)错误:……如果没有@Provides-或@products注释方法,则无法提供InstanceContextService。 home.HomeActivity.mInstanceContextService [类型的注入字段:……services.InstanceContextService
@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中看不到它。如果使用字段注入,组件必须能够解析要注入的所有依赖项(从其模块)。