1

android studio 3 (현재 베타 4)의 최신 베타 버전을 사용하고 있으며 필요한 대거 클래스를 생성 할 수 없습니다.DaggerApplicationComponent가 컴파일되지 않았습니다.

내 측면에서 나는 빈 프로젝트를 만들었습니다. 그런 다음 나는 단검 노트 인 YourActivity와 일치하도록 활동의 이름을 변경했습니다. 보여주는, https://google.github.io/dagger/android.html에서 "작업 개체를 주입"을 참조하십시오이 : 난 아직보고되지 않았기 때문에

dependencies { 
    compile 'com.google.dagger:dagger-android:2.11' 
    compile 'com.google.dagger:dagger-android-support:2.11' // if you use the support libraries 
    annotationProcessor 'com.google.dagger:dagger-android-processor:2.11' 
} 

:

@Subcomponent(modules = ...) 
public interface YourActivitySubcomponent extends AndroidInjector<YourActivity> { 
    @Subcomponent.Builder 
    public abstract class Builder extends AndroidInjector.Builder<YourActivity> {} 
} 

@Module(subcomponents = YourActivitySubcomponent.class) 
abstract class YourActivityModule { 
    @Binds 
    @IntoMap 
    @ActivityKey(YourActivity.class) 
    abstract AndroidInjector.Factory<? extends Activity> 
    bindYourActivityInjectorFactory(YourActivitySubcomponent.Builder builder); 
} 

@Component(modules = {..., YourActivityModule.class}) 
interface YourApplicationComponent {} 

@ActivityScope 
@ContributesAndroidInjector(modules = { /* modules to install into the subcomponent */ }) 
abstract YourActivity contributeYourActivityInjector(); 

public class YourApplication extends Application implements HasActivityInjector { 
    @Inject DispatchingAndroidInjector<Activity> dispatchingActivityInjector; 

    @Override 
    public void onCreate() { 
    super.onCreate(); 
    DaggerYourApplicationComponent.create() 
     .inject(this); 
    } 

    @Override 
    public AndroidInjector<Activity> activityInjector() { 
    return dispatchingActivityInjector; 
    } 
} 

//the renamed activity 
public class YourActivity extends Activity { 

    public void onCreate(Bundle savedInstanceState) { 
    //added this line 
    AndroidInjection.inject(this); 

    super.onCreate(savedInstanceState); 
    } 
} 

은 또한하여 Gradle을 빌드 응용 프로그램 파일을 해당 페이지에서 다음을 추가했습니다 아무것도 난 여전히 행운으로 구현 컴파일 업데이트 시도, 당신은 호기심이 있다면, 그것은 다음과 같습니다 또한

dependencies { 
    implementation 'com.google.dagger:dagger-android:2.11' 
    implementation 'com.google.dagger:dagger-android-support:2.11' // if you use the support libraries 
    annotationProcessor 'com.google.dagger:dagger-android-processor:2.11' 
} 

, 나는 기본 설정을 어디 수 있습니다 발견했습니다 Build ->Compiler ->Annotation Processors을 사용 설정하여 사용하도록 설정합니다. 새 프로젝트를 만들기 전에이 작업을 수행했습니다.

이 모든 후, 아무 것도 작동하지 않는 것 같습니다. 이 부분이 android studio 3.x에 깨졌습니까? 만약 당신이 어떻게 작동시키지 않았습니까?

감사합니다, 컴파일 시간 의존성 주입 도구와 같은 켈리

답변

2

아하! 나는 그 문제를 발견했다. 내가 Gradle을 응용 프로그램 파일을 다른 annotationProcessor 라인을 필요로 나타납니다 annotationProcessor 'com.google.dagger:dagger-compiler:2.11'

자신의 예를 적어도 내가 지금 DaggerYourApplicationComponent

전체 Gradle을 부분을보고하고 꽤 작업 오른쪽 않지만

:

dependencies { 
    compile 'com.google.dagger:dagger-android:2.11' 
    compile 'com.google.dagger:dagger-android-support:2.11' // if you use the support libraries 
    annotationProcessor 'com.google.dagger:dagger-android-processor:2.11' 
    annotationProcessor 'com.google.dagger:dagger-compiler:2.11' 
} 

참고 : 을 implementation으로 바꾸지는 않았지만이 기능이 유용합니다.

희망이 다른 사람도

0

단검 한 번 응용 프로그램을 실행할 필요가있다. 오류가 없으면 자동으로 생성됩니다.

+0

. 그리고 코드를 작성한 후 컴파일하십시오. 그것은 구축됩니다.그런 다음 'DaggerYourApplicationComponent' 줄에 주석을 달아서 찾지 못하고 빌드하지 못하는 것을 확인합니다. – KellyTheDev

+0

프로젝트 파일을 정리 한 후 내 ApplicationComponent에서 오류를 삭제하고 제공합니다. 하지만 내 모든 공급자와 다른 사람들이 코 렌트 (conrent) 할 때 처음 빌드 할 때 – mbakgun

+0

을 만들 것입니다. 그게 내가 너무 많이 찾은 것입니다. – KellyTheDev

0

는 너무 늦기 수 있음을하는 데 도움이됩니다. 그러나 implementation 또한 내가 안드로이드 스튜디오 3.0 베타 2를 사용 단검 2.11을 구현하는 간단한 안녕하세요 세계 프로젝트를 만든

implementation 'com.google.dagger:dagger-android:2.11' 
implementation 'com.google.dagger:dagger-android-support:2.11' 
annotationProcessor 'com.google.dagger:dagger-android-processor:2.11' 
annotationProcessor 'com.google.dagger:dagger-compiler:2.11' 

단검 2.11에서 작동합니다. 구글 문서 나뿐만 아니라 3.0.0을 Gradle을 업그레이드 할 때 나는 문제를보기 시작

MyDaggerExample

1

거기에 명확한 지침을 제공하지 않기 때문에이 좋은 출발을 가지고 (나 같은) 초보자 도움이 될 바랍니다. 나를 위해이 솔루션은 API로 구현 단검 라인을 변경했다 : 나는 때마다이 오류를 구축 할 때이`DaggerYourApplicationComponent`을 찾을 수 없기 때문에

api 'com.google.dagger:dagger-android:2.11'