"Предпочитаете вместо этого использовать процессор кинжала над этим классом" в Котлине
Я получаю эту заметку в сборке всякий раз, когда я ввожу в класс kotlin (кстати, у меня смешанный проект андроида с котином и java).
Например, после этой задачи gradle: compileStagingDebugJavaWithJavac
(StagingDebug - это мой вариант сборки), я получаю это сообщение:
"Примечание: Генерирование MembersInjector или Factory для com.packageNameXXX.CourseDiscoveryMapFragment. Предпочитают вместо этого запускать процессор кинжала над этим классом.
Здесь показан код CourseDiscoveryMapFragment:
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)
}
И мой ActivityComponent:
@ActivityScope
@Subcomponent(modules = ActivityModule.class)
public interface ActivityComponent {
void inject(BaseActivity baseActivity);
void inject(CourseDiscoveryMapFragment fragment);
//Exposed to sub-graphs.
Activity activity();
}
Итак, у меня есть компонент и модули кинжалов, написанные на Java, с инъекциями кинжала в Котлине.
Это что-то, о чем я должен беспокоиться?
Спасибо.
Ответы
Ответ 1
Я боюсь, что вы не можете. Почему бы не написать модули зависимостей в Котлин?
Чтобы написать модули зависимостей в java, вам необходимо настроить Gradle script следующим образом:
compile 'com.google.dagger:dagger:2.8'
apt 'com.google.dagger:dagger-compiler:2.8'
Но для написания модулей зависимостей в Kotlin вы должны настроить Gradle script следующим образом:
compile 'com.google.dagger:dagger:2.8'
kapt 'com.google.dagger:dagger-compiler:2.8'
кинжалу нужен инструмент обработки аннотаций для генерации кода зависимостей во время процесса компиляции. Поэтому, я думаю, вам просто нужно использовать правильный APT (инструмент обработки аннотации) в соответствии с правильным языком.