作者: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 的内容ÿ