android 同时使用kotlin和Butterknife的坑

在老项目中,一般会使用butterKnife

implementation "com.jakewharton:butterknife:$rootProject.butterKnifeVersion"
annotationProcessor "com.jakewharton:butterknife-compiler:$rootProject.butterKnifeVersion"

当我们引入kotlin时会遇到butterKnife失效当问题,这时候要将annotationProcessor改为kapt

implementation "com.jakewharton:butterknife:$rootProject.butterKnifeVersion"
kapt "com.jakewharton:butterknife-compiler:$rootProject.butterKnifeVersion"

什么是annotationProcessor

annotationProcessor是APT(Annotation Processing Tool)工具中的一种,随着Android Gradle 插件 2.2 版本的发布,Android Gradle 插件提供了名为 annotationProcessor 的功能来完全代替 android-apt,不需要引入,可以直接在build.gradle文件中使用。

annotationProcessor顾名思义是注解处理器的意思。它对源代码文件进行检测找出其中的Annotation,根据注解自动生成代码。 Annotation处理器在处理Annotation时可以根据源文件中的Annotation生成额外的源文件和其它的文件,之后将编译生成的源文件和原来的源文件一起生成class文件

 

annotationProcessor生成额外文件的规则是在依赖库里定义的,只在编译的时候执行,但是库最终不打包到apk中,所以使用Butterknife这类编译注解框架并不会增加apk的大小

2、kapt

 

Butterknife的文档里还有这么一句话:

If you are using Kotlin, replace annotationProcessor with kapt.

理解annotationProcessor的原理之后很容易就能猜到kapt也是APT工具的一种,使用 Kotlin 开发 Android 应用时,要在预编译阶段处理注解必须使用kotlin-kapt而不能使用annotationProcessor,kotlin-kapt不是Android Gradle 内置插件需要额外引入



参考:https://www.jianshu.com/p/472e66632ed0?utm_source=desktop&utm_medium=timeline

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值