"Führen Sie den Dolchprozessor lieber über diese Klasse aus" in Kotlin

124

Ich bekomme 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 compileStagingDebugJavaWithJavacerhalte ich nach dieser Gradle-Aufgabe: (StagingDebug ist meine Build-Variante) die folgende Meldung:

"Hinweis: Generieren eines MembersInjector oder einer Factory für com.packageNameXXX.CourseDiscoveryMapFragment. Führen Sie den Dolchprozessor lieber über diese 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 ActivityComponent ist:

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

    void inject(BaseActivity baseActivity);

    void inject(CourseDiscoveryMapFragment fragment);

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

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

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

Danke dir.

Fábio Carballo
quelle
Können Sie den gesamten Fehler / die Warnung und auch den dazugehörigen Code posten?
Marcospereira
4
Die Frage braucht mehr Details. Sie haben im Grunde eine Google-Abfrage als Frage geschrieben.
Jayson Minard
@marcospereira Überarbeitet! Vielen Dank!
Fábio Carballo
4
Hey, hast du eine Lösung gefunden oder vielleicht einen Grund für diese Warnung?
wojciech_maciejewski
3
Hier ist die Antwort: github.com/square/dagger/issues/537
R. Zagórski

Antworten:

5

Ich fürchte, du kannst 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'

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

Jacob
quelle