• Stars
    star
    985
  • Rank 46,353 (Top 1.0 %)
  • Language
    Java
  • Created over 4 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

人生苦短,让脚手架为你节省时间。(目前作为《最佳实践》项目的 Dev 版优先更新)

版权声明

我们就本项目 "被卖课" 一事,在掘金发表一期专访 《开源项目被人拿去做课程卖了 1000 多万是什么体验》

本项目系我为方便开发者们 无痛理解 Google 开源 Jetpack MVVM 中每个架构组件的 存在缘由、职责边界,而 精心设计的高频应用场景

与此同时,本项目是作为 《重学安卓》专栏 Jetpack MVVM 系列文章 “配套项目” 而存在,文章内容和项目代码设计均涉及本人对 Jetpack MVVM 独家理解,本人对此享有著作权

任何组织或个人,未经与作者本人沟通,不得将本项目代码设计和本人对 Jetpack MVVM 独家理解用于 "打包贩卖、引流、出书 和 卖课" 等商业用途。

 

背景

人,不是机器,人注定会犯错。

尤其在 多人协作软件工程背景下 快速版本迭代时。

有限注意力应始终放刀刃上,因而机械重复模板代码,应在后台自己默默安排好一切、免除手工操作失误造成不可预期后果

脚手架项目应运而生。

 

架构图总览

脚手架项目不仅仅是我一人创作,也是集诸多优秀开发者参与演化结果。

该项目包含 表现层、领域层、数据层 三层:

脚手架项目有 3 宝。考虑到 “按需” 选用原则,现已抽取为 “依赖库” 独立维护。

  • 福利 1:DataBinding 严格模式

GitHub:Strict-DataBinding

  • 福利 2:UnPeekLiveData 回推一次性消息

GitHub:UnPeek-LiveData

  • 福利 3:Smooth-Navigation 使转场顺滑

GitHub:Smooth-Navigation

  • 福利 4:MVI-Dispatcher 自动消除 mutable 样板代码 + 支持 LiveData 连发 + 规避 setValue 滥用

GitHub:MVI-Dispatcher

  • 福利 5:KeyValueX 消除 KV 样板代码,让 key、value、get、put、init 缩减为一,不再 KV 爆炸。

Github: KeyValueX

  • 通过 Request 来复用转发逻辑

  • 通过 UseCase 管理可叫停业务

  • 通过 DataResult 回调数据层结果

如对具体设计缘由感兴趣,可参见源码中注释的解析,此处不做累述。

 

综上

任何技术的存在,皆是于特定背景下解决特定问题,架构模式也不例外。

透过过去一年高频场景总结,我们已为 “页面开发” 场景下高频隐患提供 “相应解”。

随着背景因素不断变化,技术亦处于不断发展中,因而《Jetpack MVVM 脚手架》仍朝着趋于成熟方向不断完善。

今后如在个人项目中用到该脚手架项目依赖库,请在 issue 区提供项目信息,如此可让更多开发者有机会认识你开源作品

 

使用情况统计

根据小伙伴们对 “开源库使用情况” 匿名调查问卷参与,截至 2021年4月25日,我们了解到

包括 “腾讯音乐、BMW、TCL” 在内诸多知名厂商软件,都参考过我们开源的 Jetpack MVVM Scaffold 架构模式,及正在使用我们维护的 UnPeek-LiveData 等框架。

目前已将具体统计数据更新到相关开源库 ReadMe 中,问卷调查我们也继续保持开放,不定期将小伙伴们登记的公司和产品更新到表格,以吸引到更多小伙伴参与到对这些架构组件的使用和反馈,集众人之所长,让架构组件得以不断演化和升级。

https://wj.qq.com/s2/8362688/124a/

集团 / 公司 / 品牌 / 团队 产品
腾讯音乐 QQ 音乐
TCL 内置应用,暂时保密
贵州广电网络 乐播播
小辣椒
BMW Speech
上海互教信息有限公司 知心慧学教师
美术宝 弹唱宝
网安
字节跳动直播 直播 SDK
一加手机 OPNote

刚刚在 GitHub 看到有小伙伴基于《最佳实践》架构设计,重构多个项目,感兴趣小伙伴可前往查阅

GitHub - Jetpack开发短视频应用实战 - 重构

GitHub - 仿网易云音乐安卓客户端 - 重构

 

版权声明

本文以 CC 署名-非商业性使用-禁止演绎 4.0 国际协议 发行。

Copyright © 2019-present KunMinX

 

License

Copyright 2019-present KunMinX

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

More Repositories

1

Jetpack-MVVM-Best-Practice

难得一见 Jetpack MVVM 最佳实践!在 "以简驭繁" 代码中,对 "视图控制器" 乃至 "标准化开发模式" 形成正确、深入理解!
Java
8,626
star
2

Linkage-RecyclerView

即使不用饿了么订餐,也请务必收藏好该库!🔥 一行代码即可接入,二级联动订餐列表。
Java
3,618
star
3

UnPeek-LiveData

LiveData 数据倒灌:别问,问就是不可预期 - Perfect alternative to SingleLiveEvent, supporting multiple observers.
Java
1,123
star
4

RxJava3-Operators-Magician

你用不惯 RxJava,只因缺了这把钥匙 🔑
Java
921
star
5

Jetpack-MusicPlayer

Json 数据驱动,音乐播放组件
Java
821
star
6

VIABUS-Architecture

让 Android 开发可以像流水线一样高效的 “职责分离架构” ⚡ 不同于 MVP 的配置解耦,也非 MVVM-Clean,VIABUS 是世界范围内首个明确提出 “通过职责分离” 真正实现 UI 和业务并行开发的 Android 业务架构和设计模式理念。
Java
485
star
7

MVI-Dispatcher

简明易用框架,解决 MVI 实战痛点
Java
282
star
8

Relearn-Android

重学安卓:你是想在含糊、冗长的网文中痛苦地打滚,还是跟随我的文字呼吸新鲜的空气?🔥
Java
265
star
9

Smooth-Navigation

提供流畅的 Jetpack Navigation 转场体验。并解决 GitHub 上 Navigation Add Hide 修改版普遍存在的缺陷。
Java
250
star
10

MVI-Dispatcher-KTX

简明易用框架,解决 MVI 实战痛点
Kotlin
153
star
11

Strict-DataBinding

善用 DataBinding 彻底解决 “View 实例的 Null 安全一致性问题”
Java
94
star
12

PUA-Immunity

致创作者:免疫 “网络暴力和打压” 的 高频认知补丁
Java
80
star
13

KeyValueX

消除 Android 项目 Key-Value 样板代码
Java
74
star
14

SealedClass4Java

让 Java 1.8 也能像 Kotlin 一样使用 Sealed Class。Make Java 1.8 use Sealed Class like Kotlin
Java
11
star
15

kunminx.github.io

KunMinX's Blog
HTML
5
star
16

KunMinX

3
star