“更喜欢在Kotlin上运行匕首处理器”

每当我做一个注入到一个kotlin类(顺便说一下,我有一个混合的Android项目与kotlin和Java),我在构build中得到这个笔记。

例如,在这个gradle任务之后: compileStagingDebugJavaWithJavac (StagingDebug是我的构build变体),我得到这个消息:

“注意:为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(); } 

所以,我有用Java编写的匕首组件和模块,同时在Kotlin中进行了匕首注入。

这是我应该担心的吗?

谢谢。

我怕你不能。 为什么不在Kotlin中编写依赖模块?

要在java中编写依赖模块,你需要这样configuration你的Gradle脚本:

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

但是,要在Kotlin中编写依赖模块,您应该这样configuration您的Gradle脚本:

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

匕首需要注释处理工具在编译过程中生成依赖代码。 所以我想你只需要根据正确的语言使用正确的APT(注释处理工具)。