# BaseApplication **Repository Path**: cai_ming_yu/base-application ## Basic Information - **Project Name**: BaseApplication - **Description**: Android架构设计,设计对应的包类型开发,便于后期的维护工作和整理 - **Primary Language**: Android - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-02-10 - **Last Updated**: 2024-07-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Android架构设计文档 ## 包结构设计 设计对应的包类型开发,便于后期的维护工作和整理 设计出多设计模式的开发方式,便于后期在维护以及项目开发过程中,对项目的迁移,版本迭代提高可实现方案 ### app包 项目主包,如果不需要模块的app,直接在此包完成对应的项目开发即可,如果是组件化,需要集成多个模块之间的功能实现 ### Kernals包 工具包集合,实现各类工具包的整理集成,基础包的修复等相关工作 #### framework-base 基础包,实现各种基类的处理,部分功能的初始化。项目中的一些类的基础类整理等等。项目开发模式的定位等都需要在这个类实现,也是各类开发框架的基础服务类 ##### common 常规基础包 包中包含常量,配置相关信息,以及初始化的状态页面管理 ##### basics基础文件夹 实现各类基础数据的组装: ​ **目前已经实现:** 1. AppCompatActivity与Fragment的基础封装 2. 数据的状态管理 3. 权限请求的处理 4. 多类型的列表适配器处理 ​ **期待计划实现:** 1. 加载Loading的页面效果(缺少实现,已封装显示隐藏问题) 2. 网络判断的页面逻辑处理 3. 内存消耗优化处理 4. 弹窗页面的基础封窗 ##### channel 实现订阅功能 ​ 采用的是`LiveData` ,因为它可以感知 **Activity**、**Fragment**或 **Service** 等组件的生命周期。 使用示例: **发送订阅信息** ```kotlin sendEvent("Text","发送事件给当前页面") ``` **接收订阅信息** ```kotlin receiveEvent("Text") { it,_ -> it.toast(this@MainActivity,Toast.LENGTH_SHORT) } ``` #### framework-network 网络环境处理依赖包,目前打算使用的是 **Retrofit**+**OkHttp**实现相关的基础控制,方便后续进行迭代,更新 解析是采用的名为 Moshi 的 JSON 库,Moshi 帮助我们以更好、更简单的方式对 JSON 进行序列化和反序列化。 #### framework-widget 各种自定义View,便于整理和维护的相关自定义视图 **ResizableImageView**自适应图片,根据图片高度,自适应宽度,到时候可以根据项目,进行改变,实现根据宽度自适应高度 #### framework-resources 资源整合,针对一些资源进行公共化处理,比如,设置圆形,设置对应的背景,各种动画效果等等 目前已经整合了dp的布局,提高代码适配效果 #### framework-utils 工具包,用于各类工具的整理,目前此包可以依赖第三方实现,里面放入说明使用文档,方便后期在使用过程中查找使用方法 #### framework-mvvp Kotlin + 协程 + MVVM实现对应的开发设计框架 MVVM是Model-View-ViewModel的简写。它本质上就是MVC 的改进版。MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑 基础包设计模式-mvvm设计模式,定义开发环境中的基础开发版本 **使用注解形式,实现对应View的封装** 缺少对应封装,目前已知在报错需要处理 **在XML中进行数据绑定处理** #### framework-mvp 设计基于mvp开发模式的开发包,如果项目依赖此包,即可实现基于mvp项目的开发以及维护 #### framework-compose 设计基于谷歌中**JetPack**开发实用工具包中的**compose**,使用此类依赖后,完全不在使用对于**xml**布局的使用的声明式**UI**布局方案,高度贴合**kotlin**开发的函数式编程 #### framework-room 设计基于谷歌中**JetPack**开发实用工具包中的**Room**,完成使用安卓**sqlite**数据的数据存储问题,基于对应的数据封装,将需要大量的重复代码,通过基础类,实现,减少代码冗余,提高开发的专注度 ##### test 开发包中的测试包,实现于对应的开发测试,以及数据初步使用所需要的代码处理,当出现对应不会使用的方案时,请及时查看test的使用,做类推来提高自身代码的规范以及使用方法的完善 ​ **目前已经实现:** 1. BaseDao 2. 中间层的类创建 ​ **期待计划实现:** 1. 初始化对应的处理 2. sql对应字符串需要处理各种复杂的方案,期望实现开发过程中不写任何sql语句也能实现复杂的多表问题 3. room_paging的使用 ### buildSrc 区分构建所需的类和业务类,分开管理这些代码 ##### Deps 依赖包地址的管理 ##### Environment 基本数据的常量存储 ##### Versions 状态版本的维护处理 ### Components包 一些第三方所需要的工具包,比如视屏播放器,自定义Tab,还有一些其他相关的 #### debug-tools debug相关代码的页面,,包括切换系统环境等等 ### Features包 一些第三方功能的实现,相关第三方SDK的代码逻辑处理 #### play 支付工具的实现 ​ **目前已经实现:** 1. 暂时未完成任何工具实现 ​ **期待计划实现:** 1. 支付宝集成 2. 微信集成 3. 银联集成处理 #### web 对应的webView页面封装 ​ **目前已经实现:** 1. BaseX5WebView的封装 2. 安卓原生WebView的封装 3. X5WebView的Activity ​ **期待计划实现:** 1. Web页面的对应跳转 2. webVIew对应的Activity 3. webVIew对应的Fragment 4. X5webVIew对应的Fragment 5. js交互(在主app实现需要js调用原生的方法,目前可通过继承方式实现) 6. js交互(在主app调用js方法,目前可通过集成的方式实现) ### Test包 用于各类测试包效果,以及相关代码检验功能 #### mvvmapplication 实现关于**mvvm**的功能实现以及代码示例,以及一些开发工具的实现 #### mvpapplication 实现关于**mvp**项目开发的示例代码,以及一些开发工具的实现 #### composeapplication 实现关于**compose**项目开发的示例代码,以及一些开发工具的实现 ## 第三方工具包使用 ## 第三方SDK的集成依赖与使用