开发维护一个相对大型的app需要具备的技能点盘点

131 阅读2分钟

想到哪就说到哪,不一定全面,后续会保持更新。

组件化

把功能性、业务性的代码都抽取出来比如网络库、图片加载库、工具库、ui库,理论上app只有一个壳。

不过这样和subModule相比有好有坏,好处是架构清晰,版本明确,每次有改动都会重新发布aar,易于管理版本,不会因为版本问题导致不清楚的代码混乱,坏处是每次更新都要打包,调试也相对麻烦。总的来说好处大于坏处。

CI/CD jenkins相关

首先是网络方面

需要有完整的拦截器机制,检查登录状态,刷新token,以及挤登的处理。以及https的处理。 以及retrofit抽取基类,使得网络接口无需处理各种环境(生产/测试)。以及利用注解,使不同业务的不同接口采用不同的baseUrl(比如商城业务/电台业务就和普通业务的baseUrl是不一样的。)

动画

以glide为例,要统一抽取中间层,统一处理图片的展示逻辑,比如缩放的配置、根据oss后缀的尺寸大小来设置imageview的大小,如果不抽取出来的话,开发人员一旦多了,每个人都有自己的写法风格,很难管控风险。

webview

首先要抽取一个baseWebActivity,用来作为基础web页,上面要统一处理一些比较通用的功能,比如根据url传参决定状态栏的展示。其次就是统一管理webSetting,以及jsBridge方法,确保原生和h5交互的统一性。

url跳转

比如有个原生页面a,可能会通过外部方式比如h5、短信等页面跳转,外部并不知道如何跳转,所以需要有一个跳转util专门负责检查链接过来的url,起到中转作用。也可以定制规则,是跳转原生页还是web页。

具体可以根据url、action等类型进行分类拦截并跳转

性能监控相关

主要用友盟来监控崩溃率相关数据

埋点相关

td埋点

加固相关

360加固混淆