工程架构、需求分析及maven私服搭建

架构模式

  • 传统架构:单一App工程,所以的代码都往一个工程里面累计,代码量指数级膨胀,编译时间长;业务逻辑和基础功能模块耦合度太高,代码复用性为0.
传统架构
  • 模块化工程架构:最上层是宿主层APK,不存放任何的逻辑,是一个空壳子,唯一作用就是对外产生一个APK。第二层是业务组件层,包含首页业务,登录业务,搜索业务,详情业务。第三层是通用业务组件,是一个公司APP所有都通用的东西,最下层是功能组件,与任何业务逻辑都没有关系。每个层分层情况非常清楚,如果要形成一个新的App分厂迅速的,宿主层基本可以复用,只需要改一下包名即可。基础业务组件和功能组件基本可以复用,只需要更换一下业务代码即可。
模块化架构
  • 企业级组件化架构:模块化的主要一个缺点就是业务层的强依赖,导致工程的强耦合。组件化和模块化没有什么太大的区别,主要求别就是业务组件层的路由化改造,解耦业务模块之间的强耦合,工程的可扩展性大大提高。
组件化架构

项目需求分析

  • 需求分析
    App的主页主要有我的,发现,朋友这三个功能模块,在我的这个功能模块中主要存放与用户相关的数据。而发现是一个Fragment的列表,可以实现加载更多和下拉刷新。朋友这个页面主要包含列表的下拉刷新。菜单栏,加载侧滑菜单,可以点击立即登录跳转到登录功能,登录完成再次回到主页,同时刷新我们的用户信息,点击搜索会跳转到搜索页面,点击下面的底部菜单栏会跳转到播放音乐页面去播放音乐,点击右上角的分享会跳出分享菜单,可以把歌曲分享到想要分享的平台。有一个notification来表示当前所正在播放的歌曲,通过一个红心来添加和收藏,同时可以点击播放上一个,播放下一首,以及暂停等功能。当然可以滑动音乐比方页面来切换歌曲,以及有一个歌曲的总列表。

  • 功能模块才分落地
    嘴上是宿主工程,这个工程的为一作用就是生成我们的apk,下一层是业务组件,包含首页业务(主要是三个侧滑菜单)、登录业务、搜索业务和音乐播放业务。第三层是lib_common_ui,即基础业务组件,公共UI模块,这个模块存放App中所用到的自定义view和其他的一些公共组件,最下层是与业务无关的功能组件。


    项目的模块划分

maven私服

  • 概述
    本地仓库比较鸡肋,远程仓库中的中央仓库一般有一些大的组织去维护,一般有Mavencenter和jcenter等,中央仓库面向全球的开发者,第二个部分就是私服,与中央仓库的区别是,中央仓库是部署在公网的,而私服部署在局域网,只有在这个局域网内的用户才能下载依赖包,其他可以包括个人见一个maven仓库然后发布到maven公网上,供其他人使用。几乎所有的公司都有自己的maven私服,。


    maven体系

    maven私服优势
  • maven私服搭建流程
    1 下载开源工程nexus3.16.2,安装,启动nexus服务
    2 打开浏览器,输入localhost8081,8081是nexus启动的默认端口,进入nexus首页,这就是maven私服的管理平台,创建两个maven仓库,一个是releases,主要用来上传releases版本的第三方库,另一个是snapshots,上传快照版本,仓库地址通过copyURL拷贝出来,仓库类型都是hosted类型
    3 maven仓库引入自己的项目中
    在buildscript中和allproject中引入
    配置仓库地址
    设置用户名密码
    有多少个仓库就引入多少个
    4 上传脚本配置代码
    在各自的库gradle中引入maven
    配置uploadArchives{}
    指定上传的工程名,版本号,描述信息
    5 完成上传
    对应的tasks中upload中双击uploadArchives构建当前工程并且完成上传,上传完毕后就会在nexus管理页面看到这个库

工程buildgradle文件优化

创建一个gradle文件,这个文件用来存放所有的compileSDK和最小SDK这些编译使用的常量,把这些固定的常量提取到一起,方便管理,在根工程中引用,根工程就有了自定义ext中的三个属性,那么就可以在子工程中使用root工程中定义好的这些属性。以后想要换个SDK版本或者添加一个依赖,重新编译即可引入,方便管理,消除魔法数。

你可能感兴趣的:(工程架构、需求分析及maven私服搭建)