Skip to content Skip to sidebar Skip to footer

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?"