Skip to content
✔️ Android组件化架构,支持组件代码完全隔离/组件循环依赖/便捷集成调试/快速接入,组件内基于 mvvm结构,组件提供高度服用的模块可直接使用,采用 wanAndroid api进行迭代开发。Android componentized architecture, support component code complete isolation / component circular dependency / convenient integrated debugging / fast access, component based mvvm structure, iterative development using wanAndroid api
Kotlin Java Other
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
app account 支持登录缓存 Nov 6, 2019
compBlog fix kotlin 序列化问题 Nov 12, 2019
compMine account 支持登录缓存 Nov 6, 2019
compPaccounts
compProject 彻底废除serviceKit,不存在任何公有模块 Oct 12, 2019
compSystem
debugModule
doc
gradle/wrapper test pass app Sep 17, 2019
gradleScript account 支持登录缓存 Nov 6, 2019
libBase
libGeo
libImageloader
libNet update ant plugin 1.0.5 Nov 4, 2019
libPermission update ant plugin 1.0.5 Nov 4, 2019
libVideo update ant plugin 1.0.5 Nov 4, 2019
libWebview update ant plugin 1.0.5 Nov 4, 2019
router 删除dd插件,升级插件支持代码隔离,暂时配置libBase,持续更新 Sep 3, 2019
serviceAccount account 支持登录缓存 Nov 6, 2019
serviceMedia 新增所有模块调试入口,废runalone场景,文档更新中 Oct 9, 2019
serviceNet
serviceShare
serviceSkin
.gitignore update unuse file Oct 10, 2019
LICENSE add license Jan 26, 2018
README.md update unuse file Oct 10, 2019
app.keystore add new keystore,fix kotlin ,add newDemoModule Jun 28, 2019
build.gradle
gradle.properties test pass app Sep 17, 2019
gradlew
gradlew.bat 首次提交空项目 Jan 20, 2018
settings.gradle 彻底废除serviceKit,不存在任何公有模块 Oct 12, 2019

README.md

该Sample主要是总结当前自己项目上的经验及学习Google Architecture Components方案进行项目尝试。
目前已有部分线上App校验过该Sample的运行逻辑,完全可行,适合App快速开发,并结合自身的库及用户需求自定扩展。
由于Android项目架构多样化,技术迭代更新很快,该项目会持续集成优化主流技术,并在线上App校验可行的情况下更新项目。希望有经验的开发者能指出不足,一起学习 ☺️ ☺️

Android 组件化架构实践

架构原则:内部的业务逻辑与外部无关,独立测试时不需要加载外部依赖
架构特性:易于维护,方便测试,高内聚,低耦合
工程结构:模块化开发
应用结构:组件化
协同工具:git相关
持续集成:jenkins + ci

工程结构

component_all

按照业务把工程划分以下几类模块

  • library层

    基础类库,存放精简的代码,高复用性,一般其他模块直接引用即可,比如Utils,BaseActivity 等

  • service层

    支持某类基础业务功能的独立模块,比如登陆服务,换肤服务.介于 library 层和 component 层中间,也可以直接被 app 层调用

  • component层

    聚合多中基础业务功能的复杂业务模块,比如朋友圈,附近的人,一般可能使用多个 service 服务,也可以直接使用 library

  • app层 应用入口,聚合多个业务模块,比如主端或者调试程序

应用结构

基于完全组件化开发, 协同 gradle plugin 插件进行工程约束辅助. 组件化插件

  • 支持组件代码完全隔离,废除 router 硬编码跳转,采用面向接口编程
  • 支持组件循环依赖(A组件依赖B组件sdk,B组件依赖A组件sdk)
  • 便捷集成调试,支持单一模块调试多组件
  • 接入成本极低,只需要导入配置,同时申明各组件sdk资源

把常规 module 转化成 组件 component_all

打破常规 module 依赖,支持组件循环依赖 component_all

开发时面向接口编程,打包时面向实现编译 component_all

插件同时支持java/kotlin,插件 sample 如下

Demo集成(持续完成更新...)

  • library层
libBase:基础公有类/工具库
libWebview:H5能力库
libPermission:权限管理库
libGeo:基于百度地图sdk封装的地理定位库
libNet:基于okhttp3+retrofit2封装的网络库
  • service层
serviceAccount:应用账号模块
serviceNet:应用网络模块,涉及接口解析,host配置,线程池管理等
serviceShare:分享模块
serviceSkin:换肤模块
serviceMedia:多媒体模块,包括图片展示,Gif播放管理,视频播放管理等
  • component层
compBlog:wanAndroid 博文
compProject:wanAndroid 项目
compPaccounts:wanAndroid 公众号
compSystem:wanAndroid 体系
compMine:wanAndroid 我的
  • app层
app: 主端 wanAndroid 客户端
debugModule: 集成调试应用

wanAndroid sample 如下

Android 技术栈(实现)

技能栈

  • 硬性要求(至少)

    • 熟悉掌握java/kotlin
    • 熟悉掌握四大组件/线程/进程通讯源码逻辑清晰
    • 熟悉掌握View自定义/绘制/扩展
    • 熟悉掌握ASM,WindowManager窗口管理,app启动流程/系统启动流程熟悉掌握
    • 熟悉性能优化,字节码相关/插件相关/热修复相关
    • 熟悉 git 版本管理及应对各种特殊场景
    • 熟悉 linux/unix 环境,熟悉主流开源框架,有阅读源码经历
  • 掌握(最好)

    • 了解前段技术,js/h5等
    • 了解跨段技术,flutter等
    • 了解ios部分技术,与android常用实现区别
    • 了解产品开发流程:需求评估-技术评估-迭代开发-提测修复-回归验收-线上监控-反馈修复
    • 了解团队协同开发:人力评估/人员能力栈/积极性培养/新技术预研

项目开发

  • 熟悉组件化架构开发
  • 熟悉混淆配置/多渠道打包流程/插件原理
  • 熟悉调试手段/无线调试/模拟ip等
  • 熟悉IDE使用
    • 内存/cpu/网络调试,卡顿检测
    • Gradle使用及基本依赖管理
    • 自定义配置,比如task定义,before run行为等
  • 熟悉Android官方库,androidx标准使用
You can’t perform that action at this time.