yangchong211 / YCAppTool

🔥🔥🔥 组件化综合案例,组件分层为:基础公共组件,功能组件,业务组件,主工程。每一层组件的建设,很详细的工程案例,很全面的一个组件化实践案例。一个超级综合案例!
3.19k stars 751 forks source link

组件化项目实践

目录介绍

01.项目整体概述

1.1 项目背景说明

1.2 遇到问题记录

1.3 基础概念介绍

1.4 开发设计目标

1.5 组件化改造阻力

1.6 组件化收益分析

02.组件化演变架构图

2.1 以前App说明

2.2 现在App架构图

03.组件化实践的步骤

3.1 组件化考虑问题

3.2 组件化架构拆分

3.3 架构设计的出发点

04.组件化是如何交互

4.1 组件初始化功能

4.2 组件间页面跳转

4.3 组件间业务通信

4.4 业务耦合逐渐劣化

05.组件化避坑的指南

5.1 避免组件依赖恶化

5.2 组件化时资源名冲突

5.3 关于依赖优化记录

06.公共基础库的介绍

6.1 公共组件层概括

6.2 公共组件说明

公共基础库地址 库说明 功能介绍
[ActivityManager]() Activity任务栈管理 轻松和完全解耦合式管理activity栈操作
[AppStatusLib]() 常见广播监听库 可以全局监听电量,蓝牙,gps,网络,屏幕,Wi-Fi等状态
[ToolUtilsLib]() 常用基础工具类 大量工具库相关utils代码,可以节省开发时间
[ApplicationLib]() application初始化 用于组件化中application初始化操作库
[ParallelTaskLib]() app任务启动神器 有向无环图,简介版本的启动优化策略task库
[AppBaseStore]() 通用存储库 支持sp,mmkv,lru,disk,map多种缓存,统一api调用
[BaseClassLib]() 基础base类 主要是四大组件,fragment等相关的包装类
[ReflectionLib]() 反射工具库 提高反射调用,一行代码即可,增强反射的开发效率
[AppLogLib]() 简易版本log 简单版本log日志工具库,可以自由灵活实现日志记录
[AppRestartLib]() app重启动库 使用闹钟,service,清单等多种方式重新启动app
[SafeIntentLib]() intent打印库 支持intent,Bundle数据完整信息输出到控制台
[ArchitectureLib]() jitpack库 待完善中
[FragmentManager]() Fragment生命周期监听 支持多activity的子fragment的周期监听
[ToolFileLib]() File文件工具库 字节流,字符流,高效流读和写文件操作库
[EventUploadLib]() 异常&事件&日志上报库 辅助基础和功能组件的日志,异常和埋点上报接口库
[AppCommonInter]() 基础接口库 用于基础组件中异常降级,日志,异常等接口调用
[AppPermission]() 简单的权限库 用于权限判断,申请以及回调相关处理库
[AppLruDisk]() Lru磁盘缓存 Lru淘汰算法磁盘缓存库,写入file文件。基础工具库
[AppLruCache]() Lru内存缓存 Lru淘汰算法内存缓存库,写入到map集合中
[BaseVpAdapter]() Vp,Vp2适配器库 主要是针对vp控件adapter的简单封装

07.功能组件库的介绍

7.1 功能组件层概括

7.2 功能组件说明

功能组件库地址 库说明 功能介绍
[ZxingServerLib]() 二维码扫描库 用于二维码扫描识别的基础功能
[ZXingCodeLib]() 二维码生成库 用于生成二维码的基础库
[SerialTaskLib]() 串行线程任务管理库 用于串行线程任务执行策略的task管理库
[LocaleHelperLib]() 国际化locale库 国际化业务locale管理库
[CountTimerLib]() 倒计时器库 用于倒计时时间工具库
[AppTraceTool]() Trace工具库
[LongAliveLib]() 保活库
[ThreadPoolLib]() 线程池封装库 各种线程池案例封装库
[AutoCloserLib]() 推到后台杀死app库 推到后台n时间后自动杀死app应用进程
[AppProcessLib]() 前后台监听库 用于判断前后台状态,监听前后台切换的库
[EasyExecutor]() 轻量级线程池库 轻量级线程池封装库,简易好用
[ThreadDebugLib]() 线程debug工具 线程debug工具库
[NtpTimeLib]() Ntp国际时间校验库 主要是用于智能设备时间校验库
[AppUpdateLib]() App版本更新库 App版本更新,可以设置强制更新,普通更新

08.服务组件库的介绍

服务组件库地址 库说明 功能介绍
[ImageServer]() 图片压缩库 图片经典压缩库,高度压缩图片质量库
[OkHttpServer]() 网络请求库 简单对okhttp网络请求封装版本的网络库
[ShareServer]() 本地分享工具库 调用本地分享,可以分享图片,文件等等
[NfcServer]() NFC封装库 智能设备之间关于nfc通信交互的简单封装库
[GsonServer]() 解析容错框架 解析gson数据容错框架,主要是对后台返回json数据实体偶发类型匹配错误校验
[IpcServer]() IPC进程通信库
[EasyBleServer]() 简单蓝牙库 蓝牙链接和配对,数据传递的简易版本封装库
[LogUpload]() 日志上报库 支持上传本地路径日志文件到服务端,支持前后台上传和配置重试
[PrivateServer]() 隐私合规API库
[NetInterceptor]() 网络日志拦截器 网络日志拦截器,可以打印完整json内容输出到控制台
[GlideProgressLib]() Glide加载进度库 替换请求拦截即监听glide加载图片百分比进度
[CompressServer]() 图片加载库 简易版本图片压缩库
[BellsVibrations]() 铃声和震动库 一键可以设置铃声,设置手机震动和调整声音的库

09.项目稳定性的实践

9.1 项目稳定性背景

9.2 稳定性建设实践

10.项目诊断工具开发

10.1 为何需要诊断工具

10.2 诊断工具分类说明

工具库地址 库说明 功能介绍
[MonitorPrivacy]() 隐私合规检查 使用hook技术检测隐私合规api的调用堆栈
[MonitorFileLib]() 磁盘查看工具
[MonitorNetLib]() 网络抓包工具
[MonitorCrashLib]() 崩溃拦截工具
[MonitorInterceptor]() 弱网模拟工具
[MonitorCatonLib]() 卡顿检测工具
[MonitorPingLib]() Ping域名工具
[MonitorFpsLib]() Fps检查工具
[MonitorAnrLib]() ANR检测工具
[LeakCanarySdk]() 内存泄漏工具
[MonitorSpeed]() 流量测速工具
[MonitorXposed]() Xposed检测
[MonitorPhone]() App信息工具

11.遇到的问题点记录

12.其他介绍

12.1 其他内容介绍

image

12.2 一些技术流程

12.3 其封装库推荐

工具库地址 库说明 功能介绍
YCWebView WebView封装库 基于腾讯x5开源库,提高webView开发效率,大概要节约你百分之六十的时间成本。
YCCommonLib App组件基础库 组件化开发中基础公共库,为App开发提高组件通用性
YCAndroidTool 测试工具库 用于项目测试,崩溃重启操作,崩溃记录日志,网络拦截查看,统计耗时,ping相关工具
YCBlogs 博客大汇总 技术博客大汇总,所有博客会同步到该库中
YCThreadPool 轻量级异步线程池 轻量级简易线程池库,轻量级线程池异步库,支持线程执行过程中状态回调监测
YCDialog 弹窗封装库 自定义Toast;自定义dialog控件;自定义DialogFragment弹窗;自定义PopupWindow弹窗;还有自定义Snackbar等等
YCVideoPlayer 通用音视频播放器 播放器内核(自由切换) + 视频播放器 + 边播边缓存 + 高度定制播放器UI视图层
YCScrollPager 滑动视频库 仿抖音,快手,短视频,竖直方向,一次滚动一个页面的封装库。
YCStateLayout 状态管理器库 状态切换,让View状态的切换和Activity彻底分离开。用builder模式来自由的添加需要的状态View
YCNotification 通知栏封装库 通知栏封装库,强大的通知栏工具类,链式编程调用

12.4 勘误及提问

12.5 关于LICENSE