组件化开发时lib中使用ButterKnife插件View注入问题及解决方案
1、直接在lib中集成ButterKnife时候问题如下
使用的时候回报Attribute value must be constant,原因是:library中R.id.xxx 取R中变量的时候并非是final类型。
2、解决方案
配置ButterKnife
1.在全局的build.gradle中dependencies配置如下代码
classpath 'com.jakewharton:butterknife-gradle-plugin:8.5.0',版本号可以根据自己依赖版本
决 定,不是唯一。
2.在lib build.gradle头部中添加如下代码:
apply plugin: 'com.jakewharton.butterknife'
3.在lib build.gradle 中添加如下依赖,版本根据自己依赖而定,不是唯一
compile 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
4.在lib中是使用ButterKnife ,手动把@bind中的R改成R2,这时候会报红,我们进行rebuild即 可。
注意点:library中switch-case的使用,在library中是不能使用switch- case 找id的,解决方法就是用if-else代替。
1547711506(1).png
使用switch-case会报错。
使用if-else还有一点注意。如图
1547711915(1).png
这样就解决了butterKnife在lib中使用的问题。
网友评论