我正在编写依赖于生命周期工件的android库,问题是:我的库应该依赖于该工件的AndroidX版本还是旧版android.suport版本?
我要问的是目标受众。
就我而言,有一个Jetifier允许AndroidX上的应用使用android.support上的库,但会花费一些构建时间。
但是使用旧版支持库的应用程序呢?他们是否可以使用某些反Jetier工具依赖基于AndroidX的库?
根据expanding target api level requirements文章,在2019年底将需要定位api 28,并且(我只是推断)在2020年底需要定位api29。因此,从技术上讲,这是可能的具有遗留依赖性的应用程序可以生存到2020年底。
我没有发现有关应用迁移到AndroidX的任何统计信息,如果有的话可以分享吗?
答案 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
答案 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。