项目修改为组件化,记录一些注意事项,后续总结。
- 项目抽离baselib,每个组件依赖baselib。这边项目的baselib主要集成了一写基本的第三方库,使用的主要框架是MVPArms,详见github
- 屏幕适配采用的是MVPArms的作者的autosize。
- 组件化在config.build中使用 isWebApplication =false 作为开关控制。Android组件化开发实践和案例分享 这边文章介绍很详细,帮助很大。
- 关于组件初始化:组件化的一个问题就是每个组建的单独初始化,这边项目中我把application放在baselib中,这样每个组件单独运行时不需要拥有application,只需要处理入口的Activity。但是不想在baselib中初始化每个组件需要的配置,这样会让其他组件导入不必要的文件,增加编译的时间。项目现在使用的是谷歌官方的auto-service。auto
这里参考了
使用AutoService初始化组件,在baselib中定义的组件初始化的接口,需要有初始化操作的组件继承并实现里面的init方法即可。
- 路由采用的是ARouter,每个组件下需要新建一个统一的路由字典,需要统一到baselib中,方便调用。
- 组件化微信支付和分享的问题:因为微信回调需要在包名下的文件,目前的方案是通过ARouter暴露服务,在baselib中有微信支付和分享的服务接口,在app模块中实现该接口;需要的地方使用ARouter的方法调用,回调方法的接收目前使用的是EventBus。
- 组件化中使用ButterKnife问题:组件化中使用ButterKnife的话,需要使用R2,在点击事件中只能用if-else。还有一个问题就是,当组件作为一个module的使用使用R2,但是作为application运行的时候又要使用R。现在的做法就直接不使用ButterKnife。网上有说过使用kotlin就不会有这个问题,打算接下来使用kotlin写几个模块试试。
暂时记录,后续更新
网友评论