首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

迁移到AndroidX

官方中文文档地址

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

附录:映射表

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210203A0AOOU00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券