"Prefiero ejecutar el procesador de dagas sobre esa clase" en Kotlin


124

Recibo esta nota en la compilación cada vez que hago una inyección en una clase de kotlin (por cierto, tengo un proyecto mixto de Android con kotlin y java).

Por ejemplo, después de esta tarea gradle: compileStagingDebugJavaWithJavac(StagingDebug es mi variante de compilación), recibo este mensaje:

"Nota: Generando un MembersInjector o Factory para com.packageNameXXX.CourseDiscoveryMapFragment. En su lugar, prefiera ejecutar el procesador de dagas sobre esa clase".

Mi código de CourseDiscoveryMapFragment se puede ver aquí:

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

Y mi Componente de actividad es:

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

    void inject(BaseActivity baseActivity);

    void inject(CourseDiscoveryMapFragment fragment);

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

Entonces, tengo componentes y módulos de dagas escritos en Java, mientras tengo inyecciones de dagas en Kotlin.

¿Es esto algo de lo que debería preocuparme?

Gracias.


¿Puede publicar todo el error / advertencia y también el código relacionado con él?
marcospereira

44
La pregunta necesita más detalles. Básicamente escribiste una consulta de Google como una pregunta.
Jayson Minard

@marcospereira Reeditado! ¡Gracias!
Fábio Carballo

44
Oye, ¿encontraste solución o tal vez razón para esa advertencia?
wojciech_maciejewski

3
Aquí está la respuesta: github.com/square/dagger/issues/537
R. Zagórski

Respuestas:


5

Me temo que no puedes. ¿Por qué no escribir módulos de dependencia en Kotlin?

Para escribir módulos de dependencia en java, debe configurar su script Gradle de esta manera:

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

Pero, para escribir módulos de dependencia en Kotlin, debe configurar su script Gradle de esta manera:

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

Dagger necesita la herramienta de procesamiento de anotaciones para generar el código de dependencia durante el proceso de compilación. Así que supongo que solo necesitas usar la APT (herramienta de procesamiento de anotaciones) correcta según el lenguaje correcto.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.