栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android 迁移到androidX教程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android 迁移到androidX教程

背景: 由于android前期在使用上存在差异化管理,在后期会出现各种冲突问题。google在后期将库整合一个新库,adnroidX系列。相对原来的v4和v7,这样便于有效管理。

AndroidX 对原始 Android 支持库进行了重大改进,后者现在已不再维护。androidx 软件包完全取代了支持库,不仅提供与支持库同等的功能,而且还提供了新的库。

此外,AndroidX 还包括以下功能:

  • AndroidX 中的所有软件包都使用一致的命名空间,以字符串 androidx 开头。支持库软件包已映射到对应的 androidx.* 软件包。如需获取所有旧类到新类以及旧构建工件到新构建工件的完整映射,请参阅软件包重构页面。

  • 与支持库不同,androidx 软件包会单独维护和更新。从版本 1.0.0 开始,androidx 软件包使用严格的语义版本控制。您可以单独更新项目中的各个 AndroidX 库。

  • 版本 28.0.0 是支持库的最后一个版本。我们将不再发布 android.support 库版本。 所有新功能都将在 androidx 命名空间中开发。

  • 官方文档地址:AndroidX 概览  |  Android 开发者  |  Android Developershttps://developer.android.google.cn/jetpack/androidx

1.androidX的前期准备

如果要在新项目中使用命名空间为 androidx 的库,就需要将编译 SDK 设置为 Android 9.0(API 级别 28)或更高版本,并在 gradle.properties 文件中将以下两个 Android Gradle 插件标志设置为 true。

使用 Android Studio 3.2 及更高版本,您只需从菜单栏中依次选择 Refactor > Migrate to AndroidX,即可将现有项目迁移到 AndroidX。

compileSdkVersion 28

在module工程下的gradle.properties新增支持androidX的标志

  • android.useAndroidX:该标志设置为 true 时,Android 插件会使用对应的 AndroidX 库,而非支持库。如果未指定,那么该标志默认为 false。
  • android.enableJetifier:该标志设置为 true 时,Android 插件会通过重写其二进制文件来自动迁移现有的第三方库,以使用 AndroidX 依赖项。如果未指定,那么该标志默认为 false。
  • android.useAndroidX=true;//是开启androidX,如果设备false,将不会开启
    android.enableJetifier=true//第三方库是否引用androidX,如果使用,将会将第三方库也转为androidX                         
2.一键转换


 

2.2点击Migrate to AndroidX,点击Migrate

这个时候会弹窗,跳出一个是否备份,如果你选择备份,将会保存一个zip的文件。

 2.3会跳出一个转换提示:点击Do Refactor,将执行转换。然后等待IDE自动转换

 转换完可能会存在报错

 AndroidX和库映射对应的文件:

工件映射:https://developer.android.google.cn/jetpack/androidx/migrate/artifact-mappings

类映射:类映射  |  Android 开发者  |  Android Developershttps://developer.android.google.cn/jetpack/androidx/migrate/class-mappings

 可以自行根据官方文档对比,找到对应的工件和库类

问题:

1.KeyEventCompat类不存在,

 KeyEventCompat.startTracking(event);无法继续使用,需要用KeyEvent自身来处理  event.startTracking();

2.28失效 Canvas.MATRIX_SAVE_FLAG
 int flags = Canvas.MATRIX_SAVE_FLAG |
 Canvas.CLIP_SAVE_FLAG |
 Canvas.HAS_ALPHA_LAYER_SAVE_FLAG |
 Canvas.FULL_COLOR_LAYER_SAVE_FLAG | 
 Canvas.CLIP_TO_LAYER_SAVE_FLAG;

解决:
int sc = canvas.saveLayer(0, 0, getWidth(), getHeight(), null, Canvas.ALL_SAVE_FLAG);

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/489911.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号