ButterKnife 10.1.0 的使用

本文详细介绍了ButterKnife框架的正确集成步骤,包括不同版本的适用场景,以及解决ButterKnife与AndroidX和Support库冲突的方法。同时,分享了如何在Kotlin项目中正确使用Kapt替代AnnotationProcessor。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ButterKnife的官网:https://github.com/JakeWharton/butterknife
参考网址:https://blog.youkuaiyun.com/zyw0101/article/details/80399225

1.今天在引入ButterKnife框架时,发现官网上

  • 项目根目录的build.gradle配置了:
    classpath ‘com.jakewharton:butterknife-gradle-plugin:10.1.0’
  • 而在app目录的build.gradle也配置了:
    implementation ‘com.jakewharton:butterknife:10.1.0’
    annotationProcessor ‘com.jakewharton:butterknife-compiler:10.1.0’
  • 因为我项目里面只引用了app目录下面的引入,所以担心不引入根目录的会有问题,所以查找了下该问题,发现:
    • 如果你引入的注解只在app里面使用,就只需要引入app里面的
    • 如果你引入的注解是在Liabrary里面使用,就需要同时引入根目录里面的

2.引入成功后,运行项目发现报错,错误如下:
Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91
is also present at [androidx.core:core:1.0.0] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
在这里插入图片描述
解决:

参考网址:
Androidx和Android support库共存问题解决
https://blog.youkuaiyun.com/JoBo199501/article/details/86647711
开发问题记录:Manifest merger failed
https://msd.misuland.com/pd/2884250137616451450

原因如下:
经查是因为androidX和support库不能共存。(ButtrKnife10.1.0版本应该是引入了androidX,而我项目里面还是用的support库)
解决方法:
1.第一种方法:
把ButterKnife降版本到(因为其他框架可能还没兼容androidX,所以先降版本了)
implementation ‘com.jakewharton:butterknife:9.0.0-rc3’
annotationProcessor ‘com.jakewharton:butterknife-compiler:9.0.0-rc3’
2.第二种方法:

  • 第一步:在gradle.properties添加:
    android.useAndroidX=true
    android.enableJetifier=true

  • 第二步
    在这里插入图片描述
    3.运行代码,发现点击事件没反应
    经百度,发现别人引用Butterknife用的都是“kapt” 而不是“annotationProcessor”,修改为“kapt”运行成功,
    原因是Kotlin中 Kotlin 注解处理工具(Kotlin Annotation processing tool,kapt)替代了 annotationProcessor
    修改如下截图:
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值