【问题标题】:Can I update Android Support Library from 27.1.1 to AndroidX 1.0.0?我可以将 Android 支持库从 27.1.1 更新到 AndroidX 1.0.0 吗?
【发布时间】:2023-04-09 01:03:01
【问题描述】:
我有一个复杂的代码库,在迁移到 AndroidX 之前我会尽量小心。我的支持库目前是 27.1.1。我可以将它迁移到 AndroidX 1.0.0 吗?我看到人们从 28.0.0 迁移到 1.0.0,但没有从 27.1.1 迁移。如果第三方依赖使用旧版本的支持库怎么办?将 android.enableJetifier 设置为 true 是否可以向后兼容 v4、v7、v13 或库版本(26、27.1、28)?我很困惑。
【问题讨论】:
标签:
android
android-support-library
androidx
android-jetpack
【解决方案1】:
支持库 28.0.0 和 Androidx 1.0.0 为 built from the same source code,因此如果您先迁移到 28.0.0,可能更容易发现任何与 API 相关的错误。
Jetifier 在构建过程中通过将所有 android.support 类名称替换为 androidx 和 com.google.android.material 等效项来修改类文件。这会影响构建中包含的每个类文件,甚至是来自第三方库的类文件。因此,它为您提供了对旧版本支持库的向后兼容性。
旧版本 android 的向后兼容性现在已内置到工件中 - androidx.viewpager 将仅适用于 Android SDK 14 及更高版本。就其价值而言,v4、v7 和 v13 工件并不意味着“支持 Android SDK 4+/7+/13+”since the 26.0.0 release。
【解决方案2】:
如果您有任何 Maven 依赖项尚未迁移到 AndroidX 命名空间,当您在 gradle.properties 文件中将以下两个标志设置为 true 时,Android Studio 构建系统也会为您迁移这些依赖项:
android.useAndroidX=true
android.enableJetifier=true
要迁移不使用任何需要转换的依赖项的任何第三方库的现有项目,您可以将 android.useAndroidX 标志设置为 true,并将 android.enableJetifier 标志设置为 false。
更多信息:https://developer.android.com/jetpack/androidx/migrate