在我的模块中,在我的基础Application类中
component = DaggerCompClassComponent.builder()
.classModule(new ModuleClass()).build();
Run Code Online (Sandbox Code Playgroud)
它找不到DaggerCompClassComponent.
我有模块build.gradle
apply plugin: 'com.neenbedankt.android-apt'
.........................
apt 'com.google.dagger:dagger-compiler:2.8'
compile 'com.google.dagger:dagger:2.8'
provided 'javax.annotation:jsr250-api:1.0'
Run Code Online (Sandbox Code Playgroud)
在Project build.gradle中,
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
Run Code Online (Sandbox Code Playgroud)
我已经完成了build/rebuild/clean/restart项目.我有一个Component类,我在其中注入对象和一个ModuleClass,我提供了要注入的对象.
不生成Dagger组件的原因是什么.上课?
编辑:
这是我的ModuleClass,用@Module注释:
@Provides
@Singleton
public Interceptor provideInterceptor() {
return new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request.Builder builder = chain.request().newBuilder();
builder.addHeader("AppName-Android", BuildConfig.VERSION_NAME + "-" + BuildConfig.VERSION_CODE)
.addHeader("Content-Type", "application/json");
return chain.proceed(builder.build());
}
};
}
@Provides
@Singleton
OkHttpClient provideOkHttpClient(Interceptor interceptor) {
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.interceptors().add(interceptor);
return builder.build();
}
@Provides
@Singleton
Retrofit provideRetrofit(OkHttpClient …Run Code Online (Sandbox Code Playgroud) 对于检测测试,我有一个TestApplication创建一个TestComponent,但不再生成文件(Error:/xxx/TestApplication.java:16: The import.xxx.DaggerTestApplicationComponent cannot be resolved).我无法确定根本原因.我尝试了不同的Android Studio(2.2,2.1.2),不同的gradle插件(2.2.0-alpha6,5,4)和不同版本的dagger(2.2到2.6).
我应该用androidTestAnnotationProcessor吗?(以前不是这种情况)
编辑:使用dagger 2.6,需要添加 classpath 'com.google.guava:guava:19.0'
更新:a出现问题Module,因此Component无法创建.但是,使用插孔(即使有调试选项),我也看不到问题.现在,恢复到java 7,gradle插件2.1.2.这样,无需指定哪个番石榴版本,以及所有最新的库都可以使用(dagger 2.6,butterknife 8.2.1,apt 1.8)
android android-gradle-plugin android-instrumentation dagger-2 annotation-processor
当我们使用Dagger和Kotlin时,我们需要在build.gradle依赖项中使用以下内容
kapt 'com.google.dagger:dagger-compiler:2.0'
compile 'com.google.dagger:dagger:2.0'
provided 'org.glassfish:javax.annotation:10.0-b28'
Run Code Online (Sandbox Code Playgroud)
如http://www.beyondtechnicallycorrect.com/2015/12/30/android-kotlin-dagger/中所述
当我尝试使用Dagger执行测试时,DaggerTestComponent.builder()根据https://labs.ribot.co.uk/fast-and-reliable-ui-tests-on-android-17c261b8220c#.o3efc5knx甚至https://生成测试以Kotlin语言编写的medium.com/@fabioCollini/android-testing-using-dagger-2-mockito-and-a-custom-junit-rule-c8487ed01b56#.hxtytfns3,但有以下错误
Error:(14, 25) Unresolved reference: DaggerTestComponent
Run Code Online (Sandbox Code Playgroud)
我发现/sf/answers/2536206151/解释如何得到DaggerTestComponent产生,并尝试把下面我依赖.
androidTestApt 'com.google.dagger:dagger-compiler:2.0.1'
Run Code Online (Sandbox Code Playgroud)
显然,我认为这是针对Java而不是Kotlin,因此问题仍然存在.它有Kotlin版本吗?如何DaggerTestComponent在我的Kotlin项目中获得我的生成?