当前位置:   article > 正文

ButterKnife 10.1.0 的使用_butterknife:10.1.0

butterknife:10.1.0

ButterKnife的官网:https://github.com/JakeWharton/butterknife
参考网址:https://blog.csdn.net/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.csdn.net/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
    修改如下截图:
    在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/529706
推荐阅读
相关标签
  

闽ICP备14008679号