Android에서 Kotlin의 Dagger2를 사용합니다.

4231 단어 Dagger2AndroidKotlin

Android에서 Kotlin의 Dagger2를 사용합니다.


빠져서 공유해요.
Android Studio 2.0에서도 실행 가능
샘플:https://github.com/kamedon/AS2KotlinDagger2
추서
분명히 Submodule을 사용한 샘플인데 push를 잊어버렸어요. 옛날 버전인데...
이따가 원본 코드를 업데이트할 거예요...
상대할 수 없다
보충하여 기록하다
하위 모듈과 스크립트가 다시 추가되고 전송되었습니다.
Activity Scope 다 된 것 같아요!

Kotlin에서 Dagger2 사용하기


app/build.gradle에서 Dagger2 설정


중요한 부분만 발췌
전문https://github.com/kamedon/AS2KotlinDagger2/blob/master/app/build.gradle
kapt {
    generateStubs = true
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.3.0'
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"

    compile 'com.google.dagger:dagger:2.2'
    kapt 'com.google.dagger:dagger-compiler:2.2'
    provided 'org.glassfish:javax.annotation:10.0-b28'
}

잘못


오류가 많아서 곤란해서 공유

Dagger2 버전


compile 'com.google.dagger 2.+'
계속 하고 있습니다. 2.3이면 다음과 같은 오류가 발생하여 구축할 수 없습니다!
Error:Execution failed for task ':app:compileDebugJavaWithJavac'. >java.lang.NoSuchMethodError: >com.google.common.collect.ImmutableSetMultimap$Builder.putAll(Ljava/lang/Iterable;)Lcom/google/common/collect/ImmutableSetMultimap$Builder;
왠지 App Component인 것 같아@Component (modules=arrayOf(AppModule:class)에서 오류 발생
daggar2.2->2.3에서 발생한 오류인 것 같은데...
참조:https://github.com/google/dagger/issues/356

@Named 아니요.


Module에서 동일한 유형입니다@Provides 이렇게 하면 틀린다@Named 식별하기
ainActivity에서는 다음과 같이 설명합니다...
@Inject @Named("Toast")
lateinit var toast: PrintInterface
Error:com.example.kamedon.sample20.print.PrintInterface cannot be provided >without an @Provides- or @Produces-annotated method. >com.example.kamedon.sample20.MainActivity.print [injected field of type: >com.example.kamedon.sample20.print.PrintInterface print]
잘못
자꾸 Kotlin에 주석을 달았다고 생각하는데 틀렸어요.
이 위에 시간이 많이 걸렸어요.
정확히 다음과 같다.
@field:[Inject Named("Toast")]
lateinit var toast: PrintInterface
@Named @Inject 이렇게 쓰면 get set field에 모두 주석이 있는 설정이죠.
그래서 잘 지정해야 할 것 같아요.
그러면 Kotlin에서 행복한 Dagger 생활을 할 수 있을까...
참조:
Annotations - Annotation Use-site Targets
https://kotlinlang.org/docs/reference/annotations.html
damianpetla/kotlin-dagger-example
https://github.com/damianpetla/kotlin-dagger-example
샘플이 있어서 정말 고마워요...

좋은 웹페이지 즐겨찾기