Android에서 Kotlin의 Dagger2를 사용합니다.
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
샘플이 있어서 정말 고마워요...
Reference
이 문제에 관하여(Android에서 Kotlin의 Dagger2를 사용합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kamedon39/items/d530cf69369cc4371a3f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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'
}
@Inject @Named("Toast")
lateinit var toast: PrintInterface
@field:[Inject Named("Toast")]
lateinit var toast: PrintInterface
Reference
이 문제에 관하여(Android에서 Kotlin의 Dagger2를 사용합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kamedon39/items/d530cf69369cc4371a3f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)