last android kotlin dagger

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



retrofit dagger (1)

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.


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.