不使用Jetpack Compose的10个理由

本文译自10 reasons to NOT use Jetpack Compose,原文发布于2024年9月24日。

译者按:软件开发行业从不缺少优秀的工具,当然也没有银弹。身为开发者要学会选择合适的工具,避免出现手里拿着锤子,看什么都是钉子。那么就需要搞清楚两个事情,一个是面临的到底是什么样的问题,以及每种工具它的合适场景是什么。没有对与错,只有合适不合适。这篇文章就是帮助大家更清晰地了解到Jetpack Compose适用的场景,帮助Android开发者做出最合适的选择。

简介

Jetpack Compose 是一款出色的 UI 工具包,受到 Android 社​​区的热烈欢迎。它提供了一种为你的 Android 应用构建令人愉悦的 UI 的现代方式。

我确实喜欢 Jetpack Compose,但与任何技术一样,它也有一些注意事项。在本文中,我们将了解在什么情况下使用 View 系统更为明智以及原因。

1. 尽可能减少依赖

如果你需要尽可能少的依赖项,这可能是出于兼容性或安全性目的,那么使用 View 系统可能会更好。View 系统不需要额外的导入。它位于 Android 系统内部,与 Jetpack Compose 不同,后者需要大量依赖项,这会增加包占用空间和运行时的内存使用量,并为额外的风险打开大门。

2. 性能

View 系统自 Android 的第一个版本以来就一直存在,它非常成熟,15 年来已经进行了大量优化,对于复杂的布局,其性能通常比 Jetpack Compose 更好。Jetpack Compose 在每次迭代中都在改进,有时已经比 View 更好,请关注这个领域,View 可能很快就会失去性能之王的桂冠!

3. Espresso测试

如果你有大量基于 View 的 Espresso 测试,或者想要使用 Android Studio 中的测试记录功能,最好避免使用 Jetpack Compose,或者只考虑将 Jetpack Compose 用于新的页面。无法轻松将于View 的 Espresso 测试迁移到 Compose。此外记录 Espresso 测试功能不适用于 Compose。但是,可以手动编写 Espresso来测试 Compose。

4. 稳定性和成熟度

我们在「性能」部分简要提到了这一点。Jetpack Compose 已有 3 年历史,每次发布都会有所改进,但有时可能会出现错误。此外,许多 Compose 功能仍处于实验阶段,需要注解才能使用。使用实验性功能可能会给你的业务带来潜在的问题。

Kotlin 复制代码
// 有些特性,如Modifier,Layout和Material Design是实验性质的,需要显式的用OptInt。
@OptIn(ExperimentalMaterialApi::class)
@OptIn(@ExperimentalFoundationApi::class)
@OptIn(ExperimentalComposeUiApi::class)
@OptIn(ExperimentalLayoutApi::class)

如果你需要非常高的成熟度和稳定性,你可能希望坚持使用View 系统。

5. 功能缺失

View 系统是 Android 历史的一部分。许多 Android 功能首先在 View 上可用,然后移植到 Compose,通常 Compose 可能只提供一个包装器(例如 Google Maps)。因此,你可能希望保留 View 系统,直到这些功能在 Compose 上可用。请注意,你可以使用 AndroidView 访问那些仅限 View 的功能,Compose 最终会实现这一点。

6. 广泛应用于现有应用中

在你的职业生涯中,你很可能需要处理 View。许多大公司即使采用了 Jetpack Compose,仍然使用 View。将 View 页面迁移到 Compose 可能会带来高昂的成本,而对最终客户而言,价值相对较低。大多数公司选择逐步采用 Compose,使用 View 系统来维护较旧的 UI。你可能需要 View 技能才能有效地将 View 转换为 Compose。

7.APK 大小

如果你担心软件包的大小,你可以重新考虑是否采用 Jetpack Compose。它将使你的软件包大小至少增加几MB,虽然你可以启用R8 完整模式以进一步减小大小。但是,View 系统的占用的额外空间几乎为零,因为组件是系统的一部分,不需要额外的库。

8. 与旧设备的兼容性

Jetpack Compose 最高可兼容 Android API 21(Lollipop🍭 、Android 5.0)。如果你想要针对性地适配以前的 Android 版本,则必须使用 View。

9. 嵌入和物联网设备

单一用途的设备(自助服务终端、支付终端、自助结账)通常只运行一个应用,并且 CPU 和 RAM 资源有限。对于这些设备来说,Jetpack Compose 可能太重了,可能需要 Android 开发人员使用 View 系统来适应设备规格。这些设备也可能运行比较旧的Android版本,如 4.0 版。

10. 你不想学习新东西

也许你已经接近职业生涯的尾声,或者想要转到其他领域,那么在某些情况下,学习 Jetpack Compose 是没有意义的。学习曲线有点陡峭,因为与 View 相比,这是一种非常新的 UI 开发方法。不过,学习它可能很有用,因为其他框架(如 React 和 Flutter)也使用了某些类似的原理。

结论

Jetpack Compose 是一款出色的 UI 工具包,无疑是 Android 的未来,但它并不是唯一的 UI 工具包,View 已经证明它工作得很好,虽然有些人认为它是遗留的,但最好选择适合你的需求和限制的框架。 无论你选择哪种框架,玩得开心!Android 开发丰富多样,作为 Android 开发人员,我们的职责就是利用这些优势。

感谢你阅读本文,希望你喜欢并学到一些东西。请帮忙点赞,以表示你的支持!

本文由Android 开发者新闻赞助,在Play 商店下载应用程序。

欢迎搜索并关注 公众号「稀有猿诉」 获取更多的优质文章!

保护原创,请勿转载!

相关推荐
雨白14 小时前
Android 快捷方式实战指南:静态、动态与固定快捷方式详解
android
hqk14 小时前
鸿蒙项目实战:手把手带你实现 WanAndroid 布局与交互
android·前端·harmonyos
LING15 小时前
RN容器启动优化实践
android·react native
恋猫de小郭17 小时前
Flutter 发布官方 Skills ,Flutter 在 AI 领域再添一助力
android·前端·flutter
Kapaseker1 天前
一杯美式搞懂 Any、Unit、Nothing
android·kotlin
黄林晴1 天前
你的 Android App 还没接 AI?Gemini API 接入全攻略
android
恋猫de小郭1 天前
2026 Flutter VS React Native ,同时在 AI 时代 VS Native 开发,你没见过的版本
android·前端·flutter
冬奇Lab1 天前
PowerManagerService(上):电源状态与WakeLock管理
android·源码阅读
BoomHe2 天前
Now in Android 架构模式全面分析
android·android jetpack
二流小码农2 天前
鸿蒙开发:上传一张参考图片便可实现页面功能
android·ios·harmonyos