ChatGPT解决这个技术问题 Extra ChatGPT

"Prefer to run the dagger processor over that class instead" in Kotlin

I'm getting this note in the build whenever I do an inject into a kotlin class (btw, I have a mixed android project with both kotlin and java).

For example, after this gradle task: compileStagingDebugJavaWithJavac (StagingDebug is my build variant), I get this message:

"Note: Generating a MembersInjector or Factory for com.packageNameXXX.CourseDiscoveryMapFragment. Prefer to run the dagger processor over that class instead."

My CourseDiscoveryMapFragment code can be seen here:

class CourseDiscoveryMapFragment : Fragment(){

    @Inject
    lateinit var presenter: CourseDiscoveryMapPresenter

    lateinit var mapView: MapView

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {

        val view = inflater.inflate(R.layout.fragment_discovery_map, container, false)

        MapsInitializer.initialize(activity)

        mapView = view.mapView
        mapView.onCreate(savedInstanceState?.getBundle(BUNDLE_KEY_MAP_STATE))

        (activity as BaseActivity)
                .activityComponent.inject(this)
}

And my ActivityComponent is :

@ActivityScope
@Subcomponent(modules = ActivityModule.class)
public interface ActivityComponent {

    void inject(BaseActivity baseActivity);

    void inject(CourseDiscoveryMapFragment fragment);

    //Exposed to sub-graphs.
    Activity activity();
}

So, I'm having dagger component and modules written in Java, while having dagger injections in Kotlin.

Is this anything that I should be worried about?

Thank you.

Can you post the whole error/warning and also the code related to it?
The question needs more detail. You basically wrote a google query as a question.
@marcospereira Re-edited! Thanks!
Hey, did you find solution or maybe reason for that warning?

J
Jacob

I am afraid you can't. Why not write dependency modules in Kotlin?

To write dependency modules in java, you need to configure your Gradle script in this way:

compile 'com.google.dagger:dagger:2.8' apt 'com.google.dagger:dagger-compiler:2.8'

But, to write dependency modules in Kotlin, you should configure your Gradle script in this way:

compile 'com.google.dagger:dagger:2.8' kapt 'com.google.dagger:dagger-compiler:2.8'

dagger need the annotation processing tool to generate the dependency code during the compiling process. So I guess you just need to use the right APT(annotation processing tool) according to right language.


关注公众号,不定期副业成功案例分享
Follow WeChat

Success story sharing

Want to stay one step ahead of the latest teleworks?

Subscribe Now