![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
三方库源码解析及思考
whoami_I
这个作者很懒,什么都没留下…
展开
-
为什么ButterKnife需要在注解中使用R2
在多模块中使用ButterKnife,在bindView的时候需要使用R2而不是R,这是什么原因呢?这需要了解多模块项目是如何构建的。在构建多模块的时候,首先单独编译每一个模块下面的文件,然后根据每个模块编译之后的产物进行打包,其中一个比较重要的流程就是对资源的合并。因为最终所有模块的资源都需要提取到apk的res文件夹下面,因此这时就需要对各种资源进行分类,分配id号。如果有相同名称的资源,只会保留一个,因此资源在命名的时候,最好加一个前缀,这样可以大大降低资源的冲突率。相同的道理,我们使用到的R.id.原创 2020-05-15 20:27:56 · 1089 阅读 · 0 评论 -
编译时注解代码的编写
现在很多三方库使用了apt技术,使得我们能够在编译的时候就获得代码的信息,从而能够根据现有的代码生成一些新的代码,比如ButterKnife就会生成Activity,从而免去了去写重复的findViewById函数;Glide在编译的时候会获取GlideModule注解的类,从而在配置Glide的一些参数;还有我这里推荐一个省去写Parcelable序列化内部每个成员的write/read方法的库ParcelableGenerator,这个库也是使用另外apt技术,在编译的时候生成一个类,运行时用这个类来进原创 2020-05-11 21:31:01 · 298 阅读 · 0 评论