How To Use Dagger In Java Library Module In Android Studio?
I'm using Dagger in a Java library module in an Android Studio project and here's what my build.gradle for the module looks like: apply plugin: 'java-library' dependencies { i
Solution 1:
In your java library's gradle file:
plugins {
id'java-library'id'kotlin'id'kotlin-kapt'
}
java {
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
//Dependency injection
implementation 'com.google.dagger:dagger:2.27'
kapt 'com.google.dagger:dagger-compiler:2.24'
}
Then create a class and its dependencies:
classFirst@Injectconstructor(
privateval second: Second,
privateval third: Third
) {
funfirstFunction() {
print(second.secondMessage())
print(third.name)
}
}
classSecond(
privateval name: String
) {
funsecondMessage(): String {
return name
}
}
classThird(
val name: String
)
Then create your dagger module:
@ModuleclassModuleUtil{
@ProvidesfunprovidesSecond(): Second {
return Second("second")
}
@ProvidesfunprovidesThird(): Third {
return Third("third")
}
}
Then create your dagger component:
@Singleton@Component(modules = [
ModuleUtil::class
])
interface MainComponent {
funmaker(): First
}
An object to handle the generated component:
object DaggerWrapper {
lateinitvar mainComponent: MainComponent
funinitComponent() {
mainComponent = DaggerMainComponent
.builder()
.build()
}
}
And finally in your app android module(eg. inside an Activity):
DaggerWrapper.initComponent()
valmainComponent= DaggerWrapper.mainComponent
valfirst= mainComponent.maker()
first.firstFunction()
Post a Comment for "How To Use Dagger In Java Library Module In Android Studio?"