„Wolę zamiast tego uruchomić procesor sztyletów na tej klasie” w Kotlinie


124

Otrzymuję tę notatkę w kompilacji za każdym razem, gdy wykonuję wstrzyknięcie do klasy kotlin (przy okazji, mam mieszany projekt Androida z kotlin i java).

Na przykład po wykonaniu tego zadania gradle: compileStagingDebugJavaWithJavac(Wariant mojej kompilacji to StagingDebug), otrzymuję następujący komunikat:

„Uwaga: Generowanie MembersInjector lub Factory dla com.packageNameXXX.CourseDiscoveryMapFragment. Zamiast tego wolę uruchomić procesor sztyletu na tej klasie”.

Mój kod CourseDiscoveryMapFragment można zobaczyć tutaj:

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

A mój komponent ActivityComponent to:

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

    void inject(BaseActivity baseActivity);

    void inject(CourseDiscoveryMapFragment fragment);

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

Więc mam komponent i moduły sztyletu napisane w Javie, podczas gdy mam zastrzyki sztyletu w Kotlinie.

Czy jest to coś, o co powinienem się martwić?

Dziękuję Ci.


Czy możesz zamieścić cały błąd / ostrzeżenie i związany z nim kod?
marcospereira

4
Pytanie wymaga więcej szczegółów. Zasadniczo napisałeś zapytanie Google jako pytanie.
Jayson Minard

@marcospereira Ponowna edycja! Dzięki!
Fábio Carballo

4
Hej, czy znalazłeś rozwiązanie, a może powód tego ostrzeżenia?
wojciech_maciejewski

Odpowiedzi:


5

Obawiam się, że nie możesz. Dlaczego nie napisać modułów zależności w Kotlinie?

Aby pisać moduły zależności w java, musisz skonfigurować swój skrypt Gradle w następujący sposób:

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

Aby jednak pisać moduły zależności w Kotlinie, powinieneś skonfigurować swój skrypt Gradle w następujący sposób:

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

sztylet potrzebuje narzędzia do przetwarzania adnotacji, aby wygenerować kod zależności podczas procesu kompilacji. Więc myślę, że wystarczy użyć odpowiedniego APT (narzędzie do przetwarzania adnotacji) zgodnie z odpowiednim językiem.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.