2016-11-18 5 views
2

제목에서 알 수 있듯이 Dagger2는 Dagger * 접두어를 생성하지 않습니다. 나는 다른 유사한 포스트를 여기에서 보았다. 그러나 아무것도 작동하는 것처럼 보이지 않는다. Dagger2 단검을 생성하지 않음 * 클래스

나는이 REPO https://github.com/ecgreb/mvpc를 복제 안드로이드 스튜디오의 캐시를 무효화를 다시 시작, 내가 청소 $Project/.gradle$Home/.gradle/caches, 삭제 및 프로젝트를 다시 빌드하고 여전히 작동하지 않습니다.

이 또한 내가 뭔가를 놓치고 있습니까

Dagger2

를 사용하는 몇 가지 프로젝트에 무슨 일이 있었습니까?

apply plugin: 'com.android.application' 
apply plugin: 'com.neenbedankt.android-apt' 

android { 
    compileSdkVersion 24 
    buildToolsVersion "24.0.3" 

    defaultConfig { 
    applicationId "com.example.ecgreb.mvpc" 
    minSdkVersion 15 
    targetSdkVersion 24 
    versionCode 1 
    versionName "1.0" 
    } 
    buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
    } 
} 

tasks.withType(Test) { 
    testLogging { 
    exceptionFormat "full" 
    events "started", "skipped", "passed", "failed" 
    showStandardStreams true 
    } 
} 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile 'com.android.support:appcompat-v7:24.2.1' 
    compile 'com.android.support:design:24.2.1' 

    compile "com.google.dagger:dagger:2.7" 
    annotationProcessor "com.google.dagger:dagger-compiler:2.7" 
    provided 'javax.annotation:jsr250-api:1.0' 

    testCompile 'junit:junit:4.12' 
    testCompile 'org.mockito:mockito-core:1.10.19' 
    testCompile 'org.assertj:assertj-core:1.7.1' 
    testCompile 'org.robolectric:robolectric:3.1.2' 
    testCompile 'org.khronos:opengl-api:gl1.1-android-2.1_r1' 
} 

Application 클래스.

package com.example.ecgreb.mvpc; 

import android.app.Application; 

import com.example.ecgreb.mvpc.controller.LoginActivity; 

import javax.inject.Singleton; 

import dagger.Component; 
public class MvpcApplication extends Application { 

    @Singleton @Component(modules = { LoginModule.class }) public interface ApplicationComponent { 
    void inject(LoginActivity loginActivity); 
    } 

    private ApplicationComponent component; 

    @Override public void onCreate() { 
    super.onCreate(); 
    //DaggerApplicationComponent IS NOT BEING GENERATED 
    component = DaggerApplicationComponent.builder().build(); 
    } 

    public ApplicationComponent component() { 
    return component; 
    } 
} 
+0

ApplicationComponent 클래스를 공유해주십시오. – AJay

+0

https://github.com/antoniolg/androidmvp 여기서 전체 코드를 볼 수 있습니다. @AJay – Bri6ko

+0

이 repo에는 '단검'코드가 없습니다. 그것의 유일한 mvp – AJay

답변

13

당신이 할

apply plugin: 'com.neenbedankt.android-apt' 

그리고 대신

annotationProcessor "com.google.dagger:dagger-compiler:2.7" 

를 사용하는 경우

apt "com.google.dagger:dagger-compiler:2.7" 

AS에서 작동하지 않습니다 안드로이드 쉽다 3.0이지만, apt 대신에 annotationProcessor이 필요합니다.

+0

그게 효과가있다. 하지만 설정 가이드 https://github.com/google/dagger에서 'annotaionProccessor'를 사용합니다. 또한 생성 된 클래스 이름은'DaggerMvpcApplication_ApplicationComponent'입니다. 나는 그들이 DaggerApplicationComponent'가되어서는 안된다고 생각했습니다. – Bri6ko

+2

인터페이스가 "내부 클래스"('public static interface')이기 때문에이 클래스 이름이 발생했습니다 – EpicPandaForce

+0

의미가 있습니다. – Bri6ko

0

프로젝트에서 Jack Compiler를 사용할 때 이런 종류의 문제가있는 사람이라면 누구도 솔루션이 작동하지 않으며 Dagger2 자체에 연결되어있는 것을 보았을 것입니다. 최신 버전은 Jack과 잘 작동하지 않습니다. 관리자는 Dagger2 2.2 버전까지 작동하도록 만듭니다.

+0

나는 또한 같은 문제에 직면하고 있습니다. 어떻게 그걸 해결 했니? http://imgur.com/a/9uOxX –

+0

나는 Gradle 의존성에 Dagger2의 2.2 버전을 고수하여 해결했습니다. 단검을 사용하여 Jack을 컴파일러로 사용하려면 다른 선택의 여지가 없습니다. –

+0

자바 8에서 잭 컴파일러와 함께 2.2를 사용하고 있는데 전혀 작동하지 않습니다. –

관련 문제