库应该依赖于androidx还是android.support

问题描述 投票:1回答:2

我正在编写依赖于生命周期工件的android库,问题是:我的库应该依赖于AndroidX版本还是传统的android.support版本的工件?

我正在考虑目标受众。 就我而言,Jetifier允许AndroidX上的应用程序在android.support上使用库,但需要一些构建时间。 但是使用传统支持库的应用呢?他们是否有可能使用一些......反喷射工具来依赖基于AndroidX的库?

根据expanding target api level requirements的文章,2019年底将需要以api 28为目标,并且在2020年底可能需要(我只是推断)以api 29为目标。因此,从技术上讲,具有遗留依赖关系的应用程序可能存活下来直到2020年底。 我没有找到任何关于AndroidX的应用程序迁移的统计信息,如果你有一些可以分享吗?

android androidx android-jetpack
2个回答
1
投票

你可以手动使用jetifier来扭转喜剧。我能够手动取一个aar,使用https://dl.google.com/dl/android/studio/jetifier-zips/1.0.0-beta04/jetifier-standalone.zip的源代码来反转它。虽然,我不认为这可以集成到CI服务器,这是一个临时的解决方法,直到谷歌增加支持反向jetify。


./Bin/jteefer-standallo-re-e-/dovannoadds/jetfid.a - o reversejtfid.r


感谢https://ncorti.com/blog/jetifier-reverse


3
投票

我也正在建立一个图书馆。不幸的是,我还没有找到一个可接受的解决方案来解决依赖AndroidX并将其实现到依赖于android.support的项目的库。

我正在扯掉AndroidX并在正在构建的库中恢复到android.support,因为它导致了库的消费者的问题。我希望事实并非如此,但今天似乎没有另一种方式。


0
投票

您应该为AndroidX而不是编号的旧版支持库构建。旧编号的支持库将来不会更新。

AndroidX的旧版本可以与AndroidX一起使用,因为AndroidX包含一些support-v4和support-v7软件包(两者都支持最低API级别14)。 Jetifier根据需要为所需的支持库生成类似的类;请参阅本文档中的比较,Migrating to AndroidX

但是,您必须始终考虑最终可能停止使用较旧的API支持。人们将转向更新的设备和版本,因为许多较新的应用程序将针对最新的设备。考虑到谷歌推动和实施Play商店中现有应用程序的新规则,如构建api 28等,开发人员和用户都必须升级。

来自AndroidX Overview官方文档:

AndroidX是对原始Android支持库的重大改进。与支持库一样,AndroidX与Android操作系统分开提供,并提供跨Android版本的向后兼容性。 AndroidX通过提供功能奇偶校验和新库完全取代了支持库。此外,AndroidX还包括以下功能:

AndroidX中的所有软件包都以字符串androidx开头,位于一致的命名空间中。支持库包已映射到相应的androidx。*包。有关所有旧类和构建工件的完整映射到新构件,请参阅“包重构”页面。

与支持库不同,AndroidX软件包是单独维护和更新的。 androidx软件包使用严格的语义版本控制,从版本1.0.0开始。您可以单独更新项目中的AndroidX库。

所有新的支持库开发都将在AndroidX库中进行。这包括维护原始支持库工件和引入新的Jetpack组件。

来自Support Library文档:

注意:随着Android 9.0(API级别28)的发布,有一个名为AndroidX的支持库的新版本,它是Jetpack的一部分。 AndroidX库包含现有的支持库,还包括最新的Jetpack组件。

您可以继续使用支持库。历史工件(那些版本为27及更早版本,打包为android.support。*)将继续在Google Maven上提供。但是,所有新的库开发都将在AndroidX库中进行。

我们建议在所有新项目中使用AndroidX库。您还应该考虑将现有项目迁移到AndroidX。

© www.soinside.com 2019 - 2024. All rights reserved.