"Preferisco eseguire il processore pugnale su quella classe invece" in Kotlin


124

Ricevo questa nota nella build ogni volta che effettuo un'iniezione in una classe kotlin (a proposito, ho un progetto Android misto con kotlin e java).

Ad esempio, dopo questa attività graduale: compileStagingDebugJavaWithJavac(StagingDebug è la mia variante di build), ricevo questo messaggio:

"Nota: generazione di un MembersInjector o Factory per com.packageNameXXX.CourseDiscoveryMapFragment. Preferisco invece eseguire il processore dagger su quella classe."

Il mio codice CourseDiscoveryMapFragment può essere visto qui:

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)
}

E il mio ActivityComponent è:

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

    void inject(BaseActivity baseActivity);

    void inject(CourseDiscoveryMapFragment fragment);

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

Quindi, sto avendo componenti e moduli dagger scritti in Java, mentre ho iniezioni di dagger in Kotlin.

È qualcosa di cui dovrei essere preoccupato?

Grazie.


Puoi pubblicare l'intero errore / avviso e anche il codice ad esso correlato?
marcospereira

4
La domanda necessita di maggiori dettagli. In pratica hai scritto una query su Google come domanda.
Jayson Minard

@marcospereira Rieditato! Grazie!
Fábio Carballo

4
Ehi, hai trovato la soluzione o forse il motivo per questo avvertimento?
wojciech_maciejewski

Risposte:


5

Ho paura che tu non possa. Perché non scrivere moduli di dipendenza in Kotlin?

Per scrivere moduli di dipendenza in java, è necessario configurare lo script Gradle in questo modo:

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

Ma, per scrivere moduli di dipendenza in Kotlin, dovresti configurare il tuo script Gradle in questo modo:

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

dagger necessita dello strumento di elaborazione delle annotazioni per generare il codice di dipendenza durante il processo di compilazione. Quindi immagino che devi solo usare l'APT (strumento di elaborazione delle annotazioni) giusto in base al linguaggio giusto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.