3

2021年开发一款APP一般怎么考虑?

 3 years ago
source link: http://i.lckiss.com/?p=7045
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

体量、代码量

对于个人开发者,往往是对某个 APP 进行一个仿造或者扩展,一般情况下整体模块不会太大。当然为了练手,依旧可以选择组件化的方式,目前经过市场检验,且维护最为频繁的开源框架当属阿里的 ARouter ,但组件化不是必须的,杀鸡焉用牛刀,感兴趣的用用就行。

既然2021年了,那么所有基础业务框架首选 Jetpack,主要使用其提供的基础架构组件(MVVM):

Databinding/ViewBinding + lifecycle + LiveData + ViewModel + Room

再辅以相关工具链:

Kotlin 协程 + Android KTX + OkHttp + Retrofit

对于布局界面和动画(使用约束布局可解大部分的屏幕适配问题):

ConstraintLayout + Motionlayout

至此,一个基础应用的80%内容基本可完成,但对于某些特定领域的应用,会用到一些硬件,比如相机:CameraX

然后相应的还有一些使开发更轻松的组件:

Paging3:用于一些控件如 RecyclerView 的数据无感知分页请求处理。

Viewpager2:相对于 Viewpager ,Viewpager2 底层已经改为 RecyclerView 有着更高效的性能(对 DiffUtil 的支持)。

这么多年下来,图片框架似乎定下来了,那就是 Glide,但既然从 Java 转向了 kotlin ,自然也有了后起之秀:coil

当然,一款APP的开发总离不开事件总线,用于各界面之间的数据传递等,但也可以合理的通过共用ViewModel 进行实现,总线这里推荐美团开源的 LiveEventBus

由于框架众多,而且实际上这个需求只存在于第一次使用申请,所以也没什么好选的,我比较喜欢郭霖的:PermissionX

  • 简单数据的持久化

使用 SharedPreference 没啥问题,但鹅厂开源的 MMKV 更值得推荐。

虽然很近没更新了,最近更新一个小版本,但对于我来说 依旧喜欢 Gson

基本上都是这个:AndroidAutoSize

简单用用 Google 的 ExoPlayer

偶尔还需要一点点交互,如PopupWindow

或者像iOS一样的底部回弹:overscroll-decor

滑动布局:AndroidSwipeLayout

一些常用的图片效果比如圆角等:ShapeableImageView

以及大概是目前最强 RV 框架,用于解决大多数复杂场景:http://www.recyclerview.org/

下拉刷新:

页面状态反馈:LoadSir

表格:smartTable

图表(不用MP是因为MP图表太复杂了):hellocharts-android

欢迎页:AppIntro

瀑布流:flexbox-layout

  • 暗黑模式、动态换肤

在 2021 年我们总可以听到一些如暗黑模式,或者动态换肤的名词,确实对于应用质量的提高,其美观不可忽视。对于一般情况的下的暗黑模式,使用 原生的 theme style 即可。但更复杂的就像腾讯系的应用,由于皮肤资源往往比较庞大,不可能一开始就打包到 apk 中,于是才有了动态换肤的需求。在开源的环境下可以考虑的大概就只有 Android-skin-support,但这方面的库基本已经停更,大厂则都有其闭源的实现方案,对于个人开发者往往是不具备多套皮肤制作能力的,往往只是换下颜色,这方面可作为可选项。

谷歌的 Dagger 使用复杂受人诟病已久,所以在 jetpack 中多了一个 Hilt ,但,凡是都有但是,对于kotlin 也有一个备受瞩目的新秀:koin

性能检测:鹅厂的 matrix

内存泄露检测:square 的 leakcanary

综合工具:dokit

以上,我很菜,仅作为目前自己如果想开发一款 APP 的考虑。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK