官方中文文档地址
https://developer.android.google.cn/jetpack/androidx
AndroidX 是 Android 团队用于在 Jetpack 中开发、测试、打包和发布库以及对其进行版本控制的开源项目。
Jetpack 可以查阅:
https://developer.android.google.cn/jetpack
Jetpack 是一套库、工具和指南,可帮助开发者更轻松地编写优质应用。这些组件可帮助您遵循最佳做法、让您摆脱编写样板代码的工作并简化复杂任务,以便您将精力集中放在所需的代码上。
Jetpack 包含与平台 API 解除捆绑的 androidx.* 软件包库。这意味着,它可以提供向后兼容性,且比 Android 平台的更新频率更高,以此确保您始终可以获取最新且最好的 Jetpack 组件版本。
这里暂时先不讲Jetpack ,有兴趣的我下一篇再详细讲解。
但是按照Google的说法,后续会逐渐弃用 乱七八糟的 supper包而统一维护AndroidX,这都是很久远的事情了,但是我们必须先熟悉他,了解他,爱上他。
Google也建议,如果你是新的项目,那么你可以按照如下的方式去部署AndroidX:
如果要在新项目中使用 AndroidX,则需要将编译 SDK 设置为 Android 9.0(API 级别 28)或更高版本,并在 gradle.properties 文件中将以下两个 Android Gradle 插件标记设置为 true。
1.android.useAndroidX:如果设置为 true,Android 插件会使用相应的 AndroidX 库,而非支持库。如果未指定,则该标记默认为 false。
2.android.enableJetifier:如果设置为 true,Android 插件会重写其二进制文件,自动迁移现有的第三方库以使用 AndroidX。如果未指定,则该标记默认为 false。
当打开着两个插件以后,你的build.gradle其实没有变化的,但是你所引用的包就会出现androidx的包名了,如图:
可以看到AppCompatActivity的包名改变
android.support.v7.app.AppCompatActivity
androidx.appcompat.app.AppCompatActivity
在布局中也可以看到,我们的ConstraintLayout包名发生的改变
不仅如此哦,你全局的项目包名都需要改变哦,至于哪些package是支持AndroidX的,这个我们下面在迁移到AndroidX中讲解。
这是一个新的项目,开启这两个插件后则需要改动,那么老的项目,想象一下多痛苦,Google给我们一个迁移到AndroidX的教程,但是只能说坑也多~
迁移到AndroidX
官方中文文档:
https://developer.android.google.cn/jetpack/androidx/migrate
首先是借助Android Studio 迁移现有项目, 这里要注意必须使用3.2 及更高版本才行,您可以通过从菜单栏中依次选择Refactor > Migrate to AndroidX,快速迁移现有项目以使用 AndroidX。
当然,老的项目也是要打开useAndroidX和enableJetifier这两个插件,为了避免你尚未迁移至 AndroidX 命名空间的 Maven 依赖项,
要迁移未使用任何第三方库但带有需要转换的依赖项的现有项目,可以将 android.useAndroidX 标记设置为 true,并将 android.enableJetifier 标记设置为 false。
接着对依赖进行一下修改,这里的映射大家自己去拿表来对照,我们这里的v7和constraint-layout是需要更改的
这里我根据官网的映射表进行了一番修改:
至于其他的一些第三方依赖的错误,就要根据情况来解决了。
注意:如果您使用的是 Android KTX 模块,请务必更新依赖项以避免出现迁移问题。如需了解每个模块的最新版本,请参阅 AndroidKTX:
https://developer.android.google.cn/kotlin/ktx
附录:映射表
领取专属 10元无门槛券
私享最新 技术干货