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.
Odpowiedzi:
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:
Aby jednak pisać moduły zależności w Kotlinie, powinieneś skonfigurować swój skrypt Gradle w następujący sposób:
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.
źródło