🗒️如何快速的移除Android老项目的ButterKnife

2024-5-21
| 2024-5-21
0  |  0 分钟
type
status
date
slug
summary
tags
category
icon
password
😀
文章讨论了如何快速移除Android老项目中的ButterKnife。作者提出了三个开源项目:dengzii/RemoveButterKnife,u3shadow/RemoveButterKnife和Joehaivo/RemoveButterKnife。最后选择了Joehaivo/RemoveButterKnife,因为它支持一键替换全部文件,包括移除ButterKnife,生成findViewById,以及替换OnClick等相关代码。尽管使用此插件仍需要花费一些时间进行调整和测试,但它大大提高了效率。

背景

ButterKnife 很早就已经被废弃了,这个曾经很流行的开源项目已经不再维护了,我们目前的主力产品中,一直还遗留着这个东东。到了砍掉的时刻了。
基于以上因素,就在思考如何快速的清理掉,做好替换。

调研以及解决方案

我们暂时并未使用ViewBinding之类的技术,也就没有想着找移除ButterKnife生成ViewBinding之类的方案了。就想要找能够从ButterKnife到findViewById的代码。 更想要找的是直接一键生成,遍历整个App工程的全部Java文件进行替换生成。这样是最好的方案。如果只是一个文件一个文件手动转换的话,那要到猴年马月了呢。
经过了几个小时的探索,找到了三个开源项目,这里也一一介绍一下吧.

dengzii/RemoveButterKnife

项目地址: dengzii/RemoveButterKnife 看录制的视频上的演示效果,这是一个单文件的替换逻辑,只能一个文件一个文件的进行替换,手都要累断了。作者是dengzii。我试用了一下,是还可以。用的是idea社区版 本地导入jar包后测试的。替换后生成了findViewById等相关的代码。
notion image

u3shadow/RemoveButterKnife

项目地址: u3shadow/RemoveButterKnife 这是u3shadow开发的RemoveButterKnife插件。Android Studio上可以找到这个插件。这个的操作按钮在android studio编辑菜单中找到RemoveButterKnife按钮。效果上看也是单文件操作的。跟上面的类似吧,不过这个只是帮你移除了ButterKnife的代码,没有生成findViewById等代码

Joehaivo/RemoveButterKnife

项目地址:Joehaivo/RemoveButterKnife 这个才是能够一键去除Butterknife相关依赖, 老项目迁移的神器,感谢Joehaivo大佬。 功能包括移除Butterknife,生成findViewById,以及替换OnClick等相关的代码。支持在Activity还有fragment,ViewHolder等地方。最厉害的就是支持一键替换全部的文件,会遍历全部的Java文件,去找到有butterKnife注解的Java类做替换操作。
notion image
notion image
操作步骤以及结果就看以上这两个图就好啦。

总结

用了上面的第三个RemoveButterKnife后,还是花了两天的时间,才完成了这个任务,毕竟这个插件插入的代码位置,顺序啊,并不一定是你期望的,但是呢,也大大提高了效率。
比如生成的__bindViews();, __bindClicks();等代码如果是Activity,那么必须在onCreate()方法里面的setContentView()的后面.如果是Fragment,那么看你自己的处理逻辑了,我的得是在onCreateView()的后面。毕竟插件解决不了不同程度的封装嘛,具体不同的地方还是得结合自己的框架业务来做调整。
最后,修改完了,一定要多测测,毕竟所有的页面都涉及到了呢。
技术分享
  • Android
  • Android开发
  • 移除ButterKnife
  • RemoveButterKnife
  • 部署一个属于自己的ai壁纸网站云数据库Turso学习笔记
    目录