从0搭建 Android App

    xiaoxiao2022-07-02  94

    简介

    因为工作调整原因,从公司的Android架构组调到了一个新团队,从头开始搭建一个社区APP。索性,在架构组的时候,对app的架构有一定了解,可以搭建相对较为完善的app。

    架构

    骨架是基础,没有骨架,所有代码就像散沙一样,臃肿,混乱就全来了。 简单画了下APP的架构:

    架构比较简单:

    最上层是壳工程:基本不涉及业务代码,只是一个容纳各个业务模块的工程。里面一般只包含开屏页和首页及4个tab。

    接着就是项目的各个业务模块,一般都是按照业务类型分成各个module。

    foundation模块是项目的公共基础模块,应该包含项目所有公共组件,工具类,以及对各个SDK封装的代码等。 我认为应该包含:mvp框架代码,公共UI组件,webView封装组件等等吧

    foundation再下方就是各种无关业务的SDK组件,我只列了网络,图片,日志框架,还有很多框架,后面再往下补充了。

    DETAIL

    壳工程

    在application里会进行非常多初始化的操作,多了之后会发现app启动时间越来越长。建议可以起一个intentService,在intentService中进行初始化操作,会减少启动耗时。因为壳工程内容不多,暂时只能想到这个,后续想到其他的话,再补充。

    Business Module

    没啥,按照业务模块创建module就行

    Foundation

    1.工具类

    编码加解密:AES(使用了梆梆安全的so库),base64,md5工具类等

    封装各个SDK调用的工具类 例如:图片加载

    建议使用所有SDK都创建工具类,封装使用,以此一旦需要更换SDK,只需要修改工具类中的调用方法,不需要改动调用处,否则工作量就大了。

    2.基础框架

    MVP框架 (这个也是参照github上的框架做的改造,但找不到是哪个链接了,后续再写一篇mvp框架补上吧)

    BaseActivity

    跨平台:webView react-native

    3.公共组件

    cardView ConstraintLayout recyclerView

    vlayout

    SDK

    网络:OKHttp (https://github.com/square/okhttp)

    fastJson (https://github.com/alibaba/fastjson)

    日志:xLog (https://github.com/elvishew/xLog)

    图片:glide (https://github.com/bumptech/glide)

    动画:lottie (https://github.com/airbnb/lottie-android)

    数据监控:神策

    线上崩溃统计:自己实现

    sqllite:lietpal (https://github.com/LitePalFramework/LitePal)

    推送:个推

    性能:leakCanary (https://github.com/square/leakcanary)

    通信:eventbus (https://github.com/greenrobot/EventBus)

    组件:vlayout (https://github.com/alibaba/vlayout)

    依赖注入: butterKnife (https://github.com/JakeWharton/butterknife) butterknife对多模块应用支持还是不太好,后续在使用过程中发现在业务模块,死活无法绑定view id,最后弃用了butterKnife,不知道现在修复好了没,说实话,butterknife还是能提高一定开发效率的

    地图:高德地图

    二维码: zxing

    大概罗列了下项目中目前使用的sdk,框架等,后续再补充吧

    最新回复(0)