„Dolchprozessor lieber über dieser Klasse ausführen“ in Kotlin

Lesezeit: 2 Minuten

Benutzer-Avatar
Fabio Carballo

Ich erhalte diese Notiz im Build, wenn ich eine Injektion in eine Kotlin-Klasse mache (übrigens habe ich ein gemischtes Android-Projekt mit Kotlin und Java).

Zum Beispiel nach dieser Gradle-Aufgabe: compileStagingDebugJavaWithJavac (StagingDebug ist meine Build-Variante), erhalte ich diese Meldung:

“Hinweis: Generieren eines MembersInjector oder einer Factory für com.packageNameXXX.CourseDiscoveryMapFragment. Führen Sie stattdessen lieber den Dagger-Prozessor über dieser Klasse aus.”

Mein CourseDiscoveryMapFragment code ist hier zu sehen:

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

Und meine Aktivitätskomponente ist :

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

    void inject(BaseActivity baseActivity);

    void inject(CourseDiscoveryMapFragment fragment);

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

Ich habe also Dolchkomponenten und -module in Java geschrieben, während ich Dolchinjektionen in Kotlin habe.

Ist das etwas, worüber ich mir Sorgen machen sollte?

Vielen Dank.

  • Können Sie den gesamten Fehler/die Warnung und auch den dazugehörigen Code posten?

    – marcospereira

    23. Januar 2016 um 1:27 Uhr

  • Die Frage braucht mehr Details. Sie haben im Grunde eine Google-Abfrage als Frage geschrieben.

    – Jayson Minard

    24. Januar 2016 um 22:26 Uhr

  • @marcospereira Überarbeitet! Vielen Dank!

    – Fábio Carballo

    26. Januar 2016 um 14:59 Uhr

  • Hey, hast du eine Lösung oder vielleicht einen Grund für diese Warnung gefunden?

    – wojciech_maciejewski

    8. April 2016 um 7:10 Uhr

  • Hier ist die Antwort: github.com/square/dagger/issues/537

    – R. Zagorski

    2. September 2016 um 8:15 Uhr

Ich fürchte, das können Sie nicht. Warum nicht Abhängigkeitsmodule in Kotlin schreiben?

Um Abhängigkeitsmodule in Java zu schreiben, müssen Sie Ihr Gradle-Skript folgendermaßen konfigurieren:

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

Um jedoch Abhängigkeitsmodule in Kotlin zu schreiben, sollten Sie Ihr Gradle-Skript folgendermaßen konfigurieren:

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

Dagger benötigt das Anmerkungsverarbeitungstool, um den Abhängigkeitscode während des Kompilierungsprozesses zu generieren. Ich denke also, Sie müssen nur das richtige APT (Annotation Processing Tool) entsprechend der richtigen Sprache verwenden.

1333440cookie-check„Dolchprozessor lieber über dieser Klasse ausführen“ in Kotlin

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy