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
如果要在新项目中使用命名空间为 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点击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);



