J'obtiens cette note dans la construction chaque fois que je fais une injection dans une classe kotlin (btw, j'ai un projet android mixte avec kotlin et java).
Par exemple, après cette tâche gradle: compileStagingDebugJavaWithJavac
(StagingDebug est ma variante de construction), je reçois ce message:
"Remarque: Génération d'un MembersInjector ou Factory pour com.packageNameXXX.CourseDiscoveryMapFragment. Préférez plutôt exécuter le processeur de poignard sur cette classe."
Mon code CourseDiscoveryMapFragment 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 poignards dans Kotlin.
Est-ce quelque chose dont je devrais m'inquiéter?
Je vous remercie.
Réponses:
J'ai peur 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 manière:
Mais, pour écrire des modules de dépendance dans Kotlin, vous devez configurer votre script Gradle de cette manière:
dagger a besoin de l'outil de traitement des annotations pour générer le code de dépendance pendant le processus de compilation. Je suppose donc que vous avez juste besoin d'utiliser le bon APT (outil de traitement d'annotations) selon le bon langage.
la source