库应该依赖androidx还是android.support

时间:2019-03-30 09:00:39

标签: android androidx android-jetpack

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

我要问的是目标受众。
就我而言,有一个Jetifier允许AndroidX上的应用使用android.support上的库,但会花费一些构建时间。
但是使用旧版支持库的应用程序呢?他们是否可以使用某些反Jetier工具依赖基于AndroidX的库?

根据expanding target api level requirements文章,在2019年底将需要定位api 28,并且(我只是推断)在2020年底需要定位api29。因此,从技术上讲,这是可能的具有遗留依赖性的应用程序可以生存到2020年底。
我没有发现有关应用迁移到AndroidX的任何统计信息,如果有的话可以分享吗?

3 个答案:

答案 0 :(得分:1)

我也在建立图书馆。不幸的是,对于释放依赖于AndroidX的库并将其实现到仍然依赖android.support的项目中,我尚未找到可接受的解决方案。

我正在淘汰AndroidX,并在正在构建的库中恢复到android.support,因为它会引起库使用者的问题。我希望情况并非如此,但到目前为止似乎还没有另一种方式。

答案 1 :(得分:1)

您可以手动使用jetifier来反向喷射。 我能够手动使用aar,并使用https://dl.google.com/dl/android/studio/jetifier-zips/1.0.0-beta04/jetifier-standalone.zip上的源代码对其进行反向喷射。尽管我不认为这可以集成到CI服务器中,但这是一个临时解决方法,直到Google添加了对反向喷射的支持。


  

./ bin / jetifier-standalone -r -i〜/ Downloads / jetified.aar -o   reversejetified.aar


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

答案 2 :(得分:0)

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

较早的Android版本可以在AndroidX上正常运行,因为AndroidX包含一些support-v4和support-v7程序包(它们都支持最低API级别14)。 Jetifier会根据需要的支持库生成类似的类;参见本文档Migrating to AndroidX中的比较。

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

摘自AndroidX Overview官方文档:

  

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

     

AndroidX中的所有软件包都以一个统一的命名空间存在,从   字符串androidx。支持库软件包已映射   放入相应的androidx。*包中。对于所有的完整映射   旧类并为新类构建构件,请参见Package   重构页面。

     

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

     

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

摘自Support Library文档:

  

注意:随着Android 9.0(API级别28)的发布,新的   支持库版本AndroidX,它是   喷气背包AndroidX库包含现有的支持库   并且还包括最新的Jetpack组件。

     

您可以继续使用支持库。历史文物   (那些版本为27或更早版本,并打包为android.support。*)   仍可在Google Maven上使用。但是,所有新图书馆   开发将在AndroidX库中进行。

     

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