Kotlin에서 “대신 해당 클래스보다 대거 프로세서를 실행하는 것이 좋습니다.” 메시지가 표시됩니다. “참고 :

kotlin 클래스에 주입 할 때마다 빌드에이 메모가 표시됩니다 (btw, kotlin과 Java가 모두 혼합 된 Android 프로젝트가 있음).

예를 들어이 gradle 작업 후에 : compileStagingDebugJavaWithJavac(StagingDebug는 내 빌드 변형 임) 다음 메시지가 표시됩니다.

“참고 : com.packageNameXXX.CourseDiscoveryMapFragment에 대한 MembersInjector 또는 Factory 생성. 대신 해당 클래스에 대해 대거 프로세서를 실행하는 것이 좋습니다.”

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();
}

그래서 저는 자바로 작성된 대거 구성 요소와 모듈을 가지고 있으며 Kotlin에는 대거 주입이 있습니다.

이것이 내가 걱정해야 할 것이 있습니까?

감사합니다.



답변

당신이 할 수 없을까 두렵습니다. Kotlin에서 종속성 모듈을 작성하지 않는 이유는 무엇입니까?

자바로 종속성 모듈을 작성하려면 다음과 같이 Gradle 스크립트를 구성해야합니다.

 compile 'com.google.dagger:dagger:2.8'
 apt 'com.google.dagger:dagger-compiler:2.8'

하지만 Kotlin에서 종속성 모듈을 작성하려면 다음과 같이 Gradle 스크립트를 구성해야합니다.

compile 'com.google.dagger:dagger:2.8' 
kapt 'com.google.dagger:dagger-compiler:2.8'

dagger는 컴파일 프로세스 중에 종속성 코드를 생성하기 위해 주석 처리 도구가 필요합니다. 따라서 올바른 언어에 따라 올바른 APT (주석 처리 도구)를 사용하면됩니다.