Kotlin 风险高、RxJava 已过时,Android 原生开发现状分析!

本文分析了Android原生开发的现状,包括AndroidX、Jetpack的普及与问题,后台作业的挑战,数据库(尤其是Room和SQLDelight)的发展,外部存储的变化,Shared Preferences的未来,依赖注入(Dagger和Koin)的趋势,数据绑定(DataBinding和ViewBinding)的对比,以及状态保存、并发(AsyncTask、RxJava和协程)和Kotlin的影响。作者指出,Kotlin编译时间长、RxJava逐渐过时,而协程在并发处理上增加了复杂性。
摘要由CSDN通过智能技术生成

作者:Vasiliy Zukanov,独立 Android 开发及软件顾问
链接:https://www.techyourchance.com/the-state-of-native-android-development-november-2019/
译者:罗昭成,Android 开发者

当你好不容易学会了某个框架或者工具,觉得它很好用的时候,它或许就要过时了。

许多 Android 开发者经常会问我,要学会哪些东西才能成为一个优秀的 Android 工程师?对于这个问题,他们的描述或多或少都有些差异。但是,总体来说,我们都需要学习一系列的技能,才能成为一个优秀的 Android 工程师。

Android 原生开发的生态系统变化得非常快。至少在过去的五年时间里,我经历过很多 Android 的变化,并且花费大量的时间参与其中。这几年里,Google 每两到三年,就会推出一组新的库和框架作为官方 Android 原生开发的指导方针。我花了大量的时间,回顾了这几年的变化,希望从中找出好坏。我相信,有很多的 Android 开发者,也和我一样。

过去的一年,大量的内容被添加、被废弃或被删除,文档被更改,新的官方指导方针被引入等等。即使我以 Android 原生开发生态系统的的标准来看待这些问题,所发生的这些事情,都是非常疯狂的。当我开始思考这些内容的时候,我已经无法在我的脑海中描绘出一个完整的、详细的 Android 开发环境。

因此,我决定要花一些时间去整理这些内容,然后再来写这篇文章。本文中,我会试图去总结 Android 原生开发的生态系统中发的事情,并且对原生开发未来的走向做一些预测。我会将我的想法分成不同的章节去叙述,这些内容没有特定的顺序,但我会把最有争议的内容放在文章最后。

我希望我的这篇文章可以给你带来一些启发和帮助,但是你需要记住,本文不可能包含所有的内容,有可能会漏掉许多重要的观点,并且本文中的内容可能会包含我个人的一些偏见。

AndroidX

这个事情说起来有点儿疯狂,Google 官方在一年半前就发布了 AndroidX 的预览版本。并且在一年前, AndroidX 库就已经很稳定了,与此同时,Google 官方也宣布不再对遗留的库进行支持与开发。

用“稳定”来描述 AndroidX 这个库有点讽刺,现在关于 AndroidX 的任何东西都是不稳定的。Google 不断地在 AndroidX 下添加新的库和框架,使用 androidx 作为命名空间。许多“老”的 API(目前还不到一年)以非常快的速度发展。

到目前为止,我已经将两个应用程序迁移到了 AndroidX 上了。一切都很顺利,我已经不记得在这个过程中,带给了我多少的“惊喜“。Google 也提供了一个工具,Jetifier 可将依赖于支持库的库迁移为依赖于等效的 AndroidX 软件包,一个非常好用的工具。然而,即使是一个很小的工程,也不能实现“一键迁移”。

我也参与了没有迁移 AndroidX 的项目(项目并不计划迁移到 AndroidX), 现在也没有任何问题,所以,不迁移 AndroidX, 在有些情况下,也是一种可行的方案。

总而言之,在新的 Android 项目中,建议直接使用 AndroidX。****并且,针对老项目,我也推荐你们将迁移到 AndroidX 列到计划中,虽然现在你看不到迁移 AndroidX 过后,带来的任何收益。无论如何,你都有可能在某个时间点进行 AndroidX 的迁移,所以最好能够按照自己的进度进行迁移,而不是在 6 个月后,你需要使用某个新的 AndroidX 库时,再进行紧急迁移。

Jetpack

在讨论 AndroidX 过后,还必须要提到 Jetpack。在我的印象中,Jetpack 开始是作为“架构组件”的一把保护伞推出的。但是到后面,引入了几乎所有关于 AndroidX 的 API。因此,现在来看,我们看不到它与 AndroidX 之间的任何区别,除了 Marketing 和 PR(即市场和公关)。

当你查看 Jetpack 主页[2]时,会发现,这个页面并不是一个技术文档页面。这个更像是一个早期的 SaaS 页面。

看看例子,开发者“赞誉”:

或者“信赖应用”列表:

这些在市场公关层面更受关注,如果 Jetpack 在 2020 年申请独立 IPO,我都不会感到惊讶。

不过,说真的,尝试向自己生态系统内的开发者“销售”API 的想法,我觉得存在一些问题,比如说,谁会想看搜索出来第一个就是 ViewModel 广告呢?

总而言之,Jetpack 只是 AndroidX 库的一个聚合,所以在前面写到的 AndroidX 的内容ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值