想必大家都知道在组件化开发中如何使用ButterKnife,简单说明如下:
1.在最外层的build.gradle中引入butterKnife插件:
2.在对应的module下的build.gradle的dependencies中引入对应的butterknife:
3.在library中使用控件绑定时,使用R2替代R:
一切看起来貌似很正常,但我在组件化开发中却遇到了在library模式下,R2可以找到,但切换到Application模式下R2就找不到了,之前想着如果这样的化,岂不是在切换library与Application之前要做到R与R2动态切换?经过一段时间的懵逼后通过分析发现,R与R2都是通过编译后生成的资源类,其位置位于对应module下的/build/generated/source/r/debug/($packageName)下。注意!!!,如果在步骤1中你引入的gradle插件是例如**alpha**版本的话,可能出现当library切换到Application模式编译后R2自动清除的情况,这样你的项目就找不到R2资源了。
另外,在library中使用switch语句时,虽然用R2不会报错,但是程序启动后,你会发现对应的点击事件无效!!!,所以必须使用if语句并且用R来定位资源。
仅将组件化开发中遇到的问题记录下来,避免更多的人走弯路。