参考
https://developer.android.com/jetpack
https://developer.android.com/jetpack/androidx
把语言改为English可以查看androidx所有文档
https://developer.android.com/jetpack/androidx/migrate
Android Jetpack
Jetpack 是一套库、工具和指南,可帮助开发者更轻松地编写优质应用。这些组件可帮助您遵循最佳做法、让您摆脱编写样板代码的工作并简化复杂任务,以便您将精力集中放在所需的代码上。
Jetpack 包含与平台 API 解除捆绑的 androidx.* 软件包库。这意味着,它可以提供向后兼容性,且比 Android 平台的更新频率更高,以此确保您始终可以获取最新且最好的 Jetpack 组件版本。
随着Android 9.0(API级别28)的发布,有一个名为AndroidX的支持库的新版本,它是Jetpack的一部分。 AndroidX库包含现有的支持库,还包括最新的Jetpack组件。
您可以继续使用支持库。 历史工件(那些版本为27及更早版本,打包为android.support。*)将继续在Google Maven上提供。 但是,所有新的库开发都将在AndroidX库中进行。
我们建议在所有新项目中使用AndroidX库。 您还应该考虑将现有项目迁移到AndroidX。
Jetpack和AndroidX的关系
Jetpack是此项目的代号,AndroidX是Jetpack的包含的支持库的具体位置。
所以Jetpack和AndroidX不会特别进行区别。
当然Jetpack好像还包含其他东西,所以一般用Jetpack来代表Google此次的新项目。
AndroidX 概览
AndroidX 是 Android 团队用于在 Jetpack 中开发、测试、打包和发布库以及对其进行版本控制的开源项目。
AndroidX 对原始 Android 支持库进行了重大改进。与支持库一样,AndroidX 与 Android 操作系统分开提供,并与各个 Android 版本向后兼容。AndroidX 完全取代了支持库,不仅提供同等的功能,而且提供了新的库。此外,AndroidX 还包括以下功能:
l AndroidX 中的所有软件包都使用一致的命名空间,以字符串 androidx 开头。原support支持库软件包已映射到对应的 androidx.* 软件包。有关所有旧类到新类以及旧编译工件到新编译工件的完整映射,请参 阅迁移到 AndroidX。
l 与支持库不同,AndroidX 软件包会单独维护和更新。androidx 软件包使用严格的语义版本控制,从版本 1.0.0 开始。您可以单独更新项目中的 AndroidX 库。
语义版本控制:MAJOR.MINOR.PATCH (主版本号.次版本号.补丁版本号)
l 所有新支持库的开发工作都将在 AndroidX 库中进行。这包括维护原始支持库工件和引入新的 Jetpack 组件。
使用 AndroidX
如需了解如何迁移现有项目,请参 阅迁移到 AndroidX。
如果要在新项目中使用 AndroidX,则需要将compileSdkVersion设置为 Android 9.0(API 级别 28)或更高版本,并在项目根目录的 gradle.properties 文件中 将以下两个 Android Gradle 插件标记 设置为 true。
l android.useAndroidX:如果设置为 true,Android 插件会使用相应的 AndroidX 库,而非支持库。如果未指定,则该标记默认为 false。
l android.enableJetifier:如果设置为 true,Android 插件会重写其二进制文件,自动迁移现有的第三方库以使用 AndroidX。如果未指定,则该标记默认为 false。
迁移到 AndroidX
AndroidX 将原始支持库 API 替换为 androidx 命名空间中的软件包。只有软件包和 Maven artifact名称发生了变化;类、方法和字段名称没有改变。
注意:我们建议迁移时在单独的分支中工作。此外,还应设法避免在执行迁移时重构代码。
前提条件
迁移之前,请先将您的应用依赖的Android支持库 更新到最新版本:28.0.0。
这是因为,1.0.0 版本的 AndroidX 库 是与支持库 28.0.0版本 等效的二进制文件。
使用 Android Studio 迁移现有项目
使用 Android Studio 3.2 及更高版本,您只需从菜单栏中依次选择 Refactor > Migrate to AndroidX,即可将现有项目迁移到 AndroidX。
重构命令使用两个标记。默认情况下,这两个标记在 gradle.properties 文件中都设为 true:
l android.useAndroidX=true
l android.enableJetifier=true
注意:内置的 Android Studio 迁移功能可能并不是一切都能处理。根据您的编译配置,您可能需要手动更新编译脚本和 Proguard 映射。
例如,如果您在一个单独的编译文件中维护依赖项配置,请使用下面提到的映射文件来检查依赖项并将其更新为对应的 AndroidX 软件包。
To migrate an existing project that does not use any third-party libraries with dependencies that need converting, you can set the android.useAndroidX flag to true and the android.enableJetifier flag to false.
要迁移 一个不使用任何需要转换的依赖项的第三方库的现有项目,可以将 android.useAndroidX 标记设置为 true,并将 android.enableJetifier 标记设置为 false。
原支持包的映射
https://developer.android.com/jetpack/androidx/migrate/artifact-mappings
下表列出了一些常用的支持包的改变。
com.android.support:appcompat-v7 | androidx.appcompat:appcompat:1.0.0 |
com.android.support:design | com.google.android.material:material:1.0.0-rc01 |
com.android.support:cardview-v7 | androidx.cardview:cardview:1.0.0 |
com.android.support:multidex | androidx.multidex:multidex:2.0.0 |
com.android.support:support-fragment | androidx.fragment:fragment:1.0.0 |
com.android.support:support-v4 | androidx.legacy:legacy-support-v4:1.0.0 |
com.android.support:recyclerview-v7 | androidx.recyclerview:recyclerview:1.0.0 |
com.android.support:support-annotations | androidx.annotation:annotation:1.0.0 |
com.android.support:drawerlayout | androidx.drawerlayout:drawerlayout:1.0.0 |
类映射
https://developer.android.com/jetpack/androidx/migrate/class-mappings
下表列出了从旧命名空间到新 androidx 软件包的当前映射。