Je reçois cette note dans la build chaque fois que je fais une injection dans une classe kotlin (btw, j'ai un projet Android projet avec kotlin et Java).
Par exemple, après cette tâche gradle: compileStagingDebugJavaWithJavac
(StagingDebug est ma variante de build), je reçois ce message:
"Remarque: Génération d'un injecteur de membres ou d'une fabrique pour com.packageNameXXX.CourseDiscoveryMapFragment. Préférez exécuter le processeur de poignard sur cette classe à la place."
Mon CourseDiscoveryMapFragment code peut être vu ici:
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)
}
Et mon ActivityComponent est:
@ActivityScope
@Subcomponent(modules = ActivityModule.class)
public interface ActivityComponent {
void inject(BaseActivity baseActivity);
void inject(CourseDiscoveryMapFragment fragment);
//Exposed to sub-graphs.
Activity activity();
}
Donc, j'ai des composants et des modules de poignard écrits en Java, tout en ayant des injections de poignard dans Kotlin.
Est-ce quelque chose qui devrait m'inquiéter?
Merci.
Je crains que vous ne puissiez pas. Pourquoi ne pas écrire des modules de dépendance dans Kotlin?
Pour écrire des modules de dépendance en Java, vous devez configurer votre script Gradle de cette façon:
compile 'com.google.dagger:dagger:2.8' apt 'com.google.dagger:dagger-compiler:2.8'
Mais, pour écrire des modules de dépendance dans Kotlin, vous devez configurer votre script Gradle de cette façon:
compile 'com.google.dagger:dagger:2.8' kapt 'com.google.dagger:dagger-compiler:2.8'
dagger a besoin de l'outil de traitement d'annotation pour générer le code de dépendance pendant le processus de compilation. Donc je suppose que vous avez juste besoin d'utiliser le bon APT (outil de traitement d'annotation) en fonction de la bonne langue.