相关疑难解决方法(0)

未生成Dagger 2组件

在我的模块中,在我的基础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)

android dagger

35
推荐指数
4
解决办法
3万
查看次数

annotationProcessor + androidTest + dagger2

对于检测测试,我有一个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

8
推荐指数
1
解决办法
1799
查看次数

未解决的参考:DaggerTestComponent(Kotlin with Dagger for Test)

当我们使用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项目中获得我的生成?

android unit-testing kotlin dagger-2

2
推荐指数
1
解决办法
1108
查看次数