前提:
1、Gradle和ButterKnife版本冲突相关问题,降低Gradle版本
2、解决R资源的问题
@BindView(R2.id.titleBar)//通过R2
MyTitleBar titleBar;
为啥要用R2,原因分析:
组件化开发,当作为库的一部分构建时,R.java生成的类中的值不会被声明为“final”。就是在主项目中生成的R.java中的资源声明是一个静态常量,而在Module中却是一个静态变量。
主app: build.gradle 配置
dependencies{
implementation('com.jakewharton:butterknife:9.0.0-rc2') {
exclude group: 'com.android.support'//加这个是因为要统一编译 support
}
//butterknife
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
}
主app gradle: build.gradle 配置
dependencies {
classpath "com.android.tools.build:gradle:3.5.3"// gradle 版本不能高于4.0.0
classpath 'com.jakewharton:butterknife-gradle-plugin:9.0.0-rc2'
}
lib: build.gradle 配置
顶部加上:apply plugin: 'com.jakewharton.butterknife'
dependencies{
implementation('com.jakewharton:butterknife:9.0.0-rc2') {
exclude group: 'com.android.support'
}
//butterknife
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
}
苦心钻研 终极大招:请使用 viewBinding(出门百度)