Я получаю эту заметку в сборке всякий раз, когда делаю инъекцию в класс kotlin (кстати, у меня есть смешанный проект Android с 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, в то время как у меня есть инъекции кинжала в Kotlin.
Это то, о чем мне следует беспокоиться?
Спасибо.
Ответы:
Боюсь, ты не сможешь. Почему бы не написать модули зависимостей в Kotlin?
Чтобы писать модули зависимостей на java, вам необходимо настроить скрипт Gradle следующим образом:
Но для написания модулей зависимостей в Kotlin вы должны настроить свой скрипт Gradle следующим образом:
dagger нужен инструмент обработки аннотаций для генерации кода зависимости в процессе компиляции. Поэтому я думаю, вам просто нужно использовать правильный APT (инструмент обработки аннотаций) в соответствии с правильным языком.
источник