Подтвердить что ты не робот

"Предпочитаете вместо этого использовать процессор кинжала над этим классом" в Котлине

Я получаю эту заметку в сборке всякий раз, когда я ввожу в класс 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, с инъекциями кинжала в Котлине.

Это что-то, о чем я должен беспокоиться?

Спасибо.

4b9b3361

Ответ 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 (инструмент обработки аннотации) в соответствии с правильным языком.