开发依赖Lifecycle组件的Android库:应选AndroidX还是android.support?
这确实是Android库开发者常会纠结的问题,我来帮你梳理清楚每个关键点:
核心选型建议
先给你个明确的结论:优先选择AndroidX作为库的依赖,原因我会结合你的疑问逐一解释。
1. 旧版support库应用能否使用AndroidX依赖的库?
很遗憾,官方并没有提供“反向Jetifier”工具——Jetifier只能让AndroidX应用兼容旧support库的依赖,反过来行不通。
虽然有一些第三方尝试做过类似的转换工具(比如androidx-to-supported),但这些工具都没有官方维护,兼容性和稳定性都没法保证,很容易导致项目出现类冲突、资源引用错误等问题。所以如果你的库基于AndroidX,未迁移到AndroidX的旧项目直接依赖的话,大概率会构建失败。
2. 目标API级别要求的影响
你提到的Google Play目标API要求是准确的:2019年底要求目标API 28,2020年底确实升级到了API 29。这里要注意两个点:
- 旧版support库的最高版本对应API 28,官方在AndroidX推出后就停止了support库的更新。所以依赖旧support的库,后续无法适配API 29及以上的新系统特性,也得不到官方的bug修复。
- 虽然旧应用在2020年底前还能运行,但长远来看,开发者为了上架Google Play、适配新系统,必然会逐步迁移到AndroidX,旧support的用户群体只会越来越小。
3. AndroidX迁移统计数据
根据Google在2020年的Android开发者调查,超过70%的开发者已经完成了AndroidX迁移;到2021年,这个比例进一步提升到了85%以上。另外从开源生态来看,Retrofit、Glide、Room这些主流第三方库都早已切换到AndroidX,旧support版本要么停止维护,要么只做紧急bug修复。
这意味着绝大多数活跃的Android开发者都已经在使用AndroidX,未迁移的大多是维护频率低的老旧项目,或者一些特殊场景的遗留应用。
最终选型决策
- 如果你的库面向主流活跃开发者:果断选AndroidX。这是官方明确的未来方向,没有Jetifier带来的构建开销,能使用最新的Lifecycle组件特性,还能避免旧support库的各种兼容性坑。
- 如果必须兼容极少数未迁移的老旧项目:可以考虑发布两个版本(AndroidX版+旧support版),但这会增加你的维护成本,需要权衡投入和收益。
- 绝对不推荐只维护旧support版本:官方已经放弃更新,后续会遇到越来越多的适配问题,而且用户群体只会持续萎缩。
内容的提问来源于stack exchange,提问作者dhabensky
相关产品推荐
相关产品推荐

