Android开发Android进阶之路Android开发

JetPack板块—Android X解析

2023-02-21  本文已影响0人  谁动了我的代码

Android Jetpack简述

AndroidX 是Android团队用于在Jetpack中开发,测试,打包,发布和版本管理的开源项目。相比于原来的Android Support库,AndroidX 可以称得上是一次重大的升级改进。

和Support库一样,AndroidX与Android 操作系统独立分开,并且提供跨Android版本的向后兼容。AndroidX提供功能奇偶性校验,以及一些新的开发库,可以完全取代Support库。

Android X 特性

support库解析

support库可以看作是三方库,只是它是由google官方发布的,这部分内容是在发布android sdk时没有考虑到(未包含),之后又想在低版本android设备上使用的内容(基于低版本sdk实现),所以google在提供了一个新的api时会以support的形式提供,我们就可以像使用三方库一样依赖使用

implementation 'com.android.support:appcompat-v7:27.1.0'
implementation 'com.android.support:recyclerview-v7:27.1.0'
implementation 'com.android.support:design:27.1.0'

这样会导致很多问题,比如所有com.android.support库必须使用完全相同的版本规范,混合版本可能导致运行时崩溃,这为项目管理带来很多挑战。

目前很多官方组件库都迁移到了AndroidX,一些三方开源库也在积极响应,所以Android Jetpack是今后Android开发的一个趋势,如果公司现有项目还没有迁移到AndroidX,应该尽快迁移,而新开发的项目更应该基于AndroidX。

项目使用android x库

如果要在新项目中使用命名空间为 androidx 的库,按照如下步骤:

Android 插件会使用对应的 AndroidX 库,而非支持库。默认为 false。

android.useAndroidX=true

Android 插件会通过重写其二进制文件来自动迁移现有的第三方库,以使用 AndroidX 依赖项。默认为 false。

android.enableJetifier=true

依赖AndroidX相关库,参考AndroidX相关库版本

root build.gradle
allprojects {
    repositories {
        google()   //添加 google() 代码库
        jcenter()
    }
}

app build.gradle
implementation 'androidx.appcompat:appcompat:1.0.2'

Jetpack库和Support库的内容都被集合在AndroidX中了,但是每个库还是单独维护的,我们可以选择性使用其中某些库

迁移老项目到 AndroidX

如果从 Android Support Library 迁移到 AndroidX 是不需要手动改包名的,Android Studio 提供了一个一键迁移的功能。步骤如下:

项目名右键 --> Refactor --> Migrate to AndroidX

image

然后在弹出的窗口中点击 Migrate,Android Studio 就会自动检测你项目中所有使用 Android Support Libraray 的地方,并将它们全部改成 AndroidX 中对应的库。并且 Android Studio 还会将原来的项目自动备份一份 zip 文件,这样即使迁移之后代码出了问题,还可以找回之前的代码。

image

上文解析了Android X库的特征以及项目中使用方法;在JetPack的技术板块中还有很多核心技术;需要更进一步学习的可以点击《Android核心技术手册》这个技术文档。

AndroidX和Android支持库的区别

安卓支持库 AndroidX包库
编写依赖关系的语法: com.android.support:recyclerview-v7 编写依赖关系的语法: androidx.recyclerview:recyclerview
在项目中使用支持库时,必须为所有支持库保持相同的版本。 开发者可以自由地对不同的android组件使用不同版本的依赖。
为了在应用程序中使用安卓组件,需要添加的依赖性包括其他各种没有用的东西。 开发者只允许添加那些他们将在应用程序中使用的依赖性。
支持库的包被捆绑在安卓操作系统中。例如: android.content.Intent 未捆绑的库被移到 androidx.* 命名空间,并与应用程序的APK打包。例如: androidx.fragment.app.Fragment
包的名称包含最小支持的API级别。 该包对API级别没有依赖性。
所有的依赖都需要在使用前更新,因为所有的支持库都需要有完全相同的版本规格。 AndroidX库可以单独更新。因此,开发者可以只更新项目中需要的那些库。
谷歌已经停止了对 com.android.support 库的支持。 AndroidX包库是谷歌推荐在项目中使用的库包。
上一篇下一篇

猜你喜欢

热点阅读