AndroidX:它是什么、关键库与迁移

作者: IT Sectr 发布日期: 2026-05-01 阅读时间: 8 分钟

AndroidX 是Google提供的一套Jetpack库,取代了过时的Support Library。根据Google Developer Documentation, 2024,AndroidX为所有Android版本提供向后兼容的组件,是现代Android开发的标准。AndroidX库包括UI、导航、数据处理、相机和后台任务的工具。

要点

  • AndroidX — Support Library的继承者,于2018年作为Jetpack的一部分发布
  • AndroidX库不依赖于API版本,可在Android 4.0+设备上运行
  • Support Library的迁移通过Android Studio自动完成
  • 主要模块:Activity、Fragment、RecyclerView、Navigation、Room、WorkManager
  • 语义化版本控制允许库彼此独立更新

什么是AndroidX

AndroidX是一个开源库,是Android Jetpack的一部分。谷歌于2018年发布了AndroidX,作为Support Library的替代品,后者从2011年起为旧版Android提供向后兼容的组件。

在AndroidX出现之前,Support Library的每个组件都有自己的版本,绑定到targetSdkVersion。开发人员必须同时连接同一个库的多个版本,这会导致依赖冲突和APK文件大小增加。

AndroidX通过语义化版本控制(SemVer)解决了这个问题。现在每个库都是独立的Gradle构件,版本格式为MAJOR.MINOR.PATCH。开发人员可以将Room从2.4.0更新到2.6.0,而无需修改Activity、Fragment或其他模块。

AndroidX的出现历史

第一个稳定版本AndroidX 1.0.0于2018年12月与Android 9 Pie一起发布。谷歌宣布Support Library进入维护模式,所有新组件——Navigation、WorkManager、Compose——仅在AndroidX中发布。Support Library的最后一个版本——28.0.0——于2019年发布。

根据Google I/O 2019,过渡的关键原因是需要加快更新发布速度。在旧模型中,由于包版本统一,一个库必须等待另一个库。AndroidX消除了这种阻塞,Jetpack开始每2-3个月获得主版本和次版本更新。

AndroidX与Support Library的区别

主要区别在于命名空间。Support Library使用android.support.*包,而AndroidX转向了androidx.*。这一变化使得库可以按功能模块划分。例如,Support Library中的Fragment称为android.support.v4.app.Fragment,而在AndroidX中则是androidx.fragment.app.Fragment。

第二个重要区别是架构。AndroidX与Jetpack一起提供——一套关于应用程序架构的建议。Jetpack包括ViewModel、LiveData、Room、Navigation和WorkManager,它们被设计为一个统一的生态系统,而不是分散的工具。

向后兼容性也得到了改善。Support Library支持Android 2.3+,而AndroidX保证在Android 4.0(API 14)及更高版本的设备上运行——根据Google Play Console 2024的数据,这覆盖了超过99%的活跃设备。

AndroidX库的组成

AndroidX包含超过100个库,分为不同的组。每个组负责特定领域:UI、数据、导航、后台任务、多媒体和测试。以下是关键模块的概述。

核心和基础库

androidx.core:core — 基础库,包含系统API的向后兼容版本:NotificationCompat、ActivityCompat、ContextCompat。core-ktx模块提供了用于处理文件、SharedPreferences和视图元素的Kotlin扩展。

androidx.activity:activity库引入了Activity Result API(registerForActivityResult),取代了过时的startActivityForResult。fragment:fragment模块管理片段的生命周期,并支持用于事务和返回栈的FragmentManager。

androidx.lifecycle — Jetpack架构的基础。LifecycleOwner和LifecycleObserver允许组件响应Activity或Fragment的生命周期变化。ViewModel在屏幕旋转时保留数据,LiveData通知UI数据的变化。

kotlin
class MainViewModel : ViewModel() {
    private val _users = MutableLiveData<List<User>>()
    val users: LiveData<List<User>> = _users

    fun loadUsers() {
        viewModelScope.launch {
            val result = repository.getUsers()
            _users.value = result
        }
    }
}

UI库

androidx.recyclerview:recyclerview — 用于显示列表和网格的强大组件。RecyclerView支持LayoutManager(LinearLayoutManager、GridLayoutManager)、ItemDecoration和通过ItemAnimator实现的动画。带有AsyncListDiffer的ListAdapter库通过自动差异计算简化了列表更新。

androidx.navigation:navigation — 用于屏幕间导航的库。Navigation Component与NavHostFragment和NavController协作,支持用于传递类型化参数的Safe Args和用于外部链接的Deep Links。NavGraph在XML文件中描述所有路由。

androidx.compose.ui — 基于Kotlin构建的声明式UI框架Jetpack Compose。与View系统不同,Compose仅通过重组重新绘制已更改的元素。Material Design 3组件(Button、TextField、Scaffold)在material3模块中可用。

构件用途
Fragmentandroidx.fragment管理片段和事务
RecyclerViewandroidx.recyclerview优化后的列表和网格
Navigationandroidx.navigation屏幕间导航
Compose UIandroidx.compose.ui基于Kotlin的声明式UI

数据处理库

androidx.room:room — 用于本地数据存储的ORM。Room从带注释的SQLite查询生成DAO类,在编译阶段检查SQL语法,并支持RxJava和Kotlin Flow。2.6版本包含对KSP的支持,以加快代码生成速度。

androidx.work:workmanager — 用于保证执行的后台任务库。WorkManager支持定期任务、工作链(beginWith、then)和启动条件(Constraints:网络、充电、内存)。即使应用程序已关闭,WorkManager也会在设备重启后完成任务。

androidx.datastore:datastore — SharedPreferences的现代替代品。DataStore使用Kotlin Coroutines和Flow,同步和异步工作,消除了UI线程阻塞。Preferences DataStore存储简单的键值对,而Proto DataStore通过Protocol Buffers存储类型化对象。

如何迁移到AndroidX

自动迁移是谷歌推荐的从Support Library过渡到AndroidX的方法。从3.2版本开始,Android Studio包含内置工具Refactor Migrate to AndroidX,可以替换命名空间并更新build.gradle中的依赖。

在迁移之前,需要更新compileSdk版本到28或更高。同时确保所有第三方库都支持AndroidX。如果某个依赖尚未迁移,可以在gradle.properties中使用android.enableJetifier=true标志——它会自动重写第三方库的字节码。

在Android Studio中自动迁移

在Android Studio中,从菜单中选择Refactor Migrate to AndroidX。IDE将扫描整个项目,找到所有来自android.support.*包的导入,并将其替换为androidx.*。app/build.gradle中的依赖也将更新——Support Library构件将替换为相应的AndroidX版本。

迁移后,Gradle Sync可能会显示错误,如果某些依赖未找到。在Google Maven文档中检查所用库的列表——所有AndroidX构件都已发布在google()上。如果库不可用,请在repositories中添加mavenCentral()。

groovy
android {
    compileSdk 34
}

dependencies {
    // Support Library(已过时)
    // implementation 'com.android.support:appcompat-v7:28.0.0'
    
    // AndroidX
    implementation 'androidx.core:core-ktx:1.13.1'
    implementation 'androidx.appcompat:appcompat:1.7.0'
    implementation 'androidx.activity:activity-ktx:1.9.3'
    implementation 'androidx.fragment:fragment-ktx:1.8.5'
    implementation 'androidx.recyclerview:recyclerview:1.3.2'
    implementation 'androidx.room:room-runtime:2.6.1'
    ksp 'androidx.room:room-compiler:2.6.1'
}

手动迁移

如果项目过大或包含来自Support Library的自定义View,自动替换可能不完整。手动替换代码中的所有字符串:更改导入、XML中的属性(app/src/main/res)和清单中的引用。对于Support Library属性,android:前缀更改为app:(例如,app:cardCornerRadius代替android:cardCornerRadius)。

在手动迁移后检查R引用。Support Library通过android.support.v7.appcompat.R导出资源,而AndroidX通过androidx.appcompat.R导出。在项目中搜索并替换所有旧R路径的引用。项目构建应该没有错误和弃用警告。

使用AndroidX的优势

AndroidX的第一个优势是模块化。您只连接实际使用的库。如果应用程序只需要RecyclerView和Navigation,则无需引入整个Support Library和所有View组件。这减少了APK大小并加快了项目构建速度。

第二个优势——定期更新。Jetpack每1-3个月发布稳定版本。2024年发布的Room 2.6.0增加了对KSP和Kotlin 2.0的支持。Navigation 2.8.0引入了基于Kotlinx Serialization的类型安全路由。开发人员无需等待下一个Android版本即可获得新功能。

第三个优势——与Kotlin集成。所有AndroidX库都有带扩展函数的-ktx模块。viewLifecycleOwner.lifecycleScope在片段的上下文中启动协程,collectLatest处理Flow,SharedFlow和StateFlow与Lifecycle-aware组件完全兼容。这使代码更简洁和安全。

向后兼容性是AndroidX相对于新平台API的关键优势。您可以在Android 4.0+上使用AppCompatDelegate.setDefaultNightMode设置深色主题,在Android 5.0+上使用NotificationCompat.setBubble设置气泡,在Android 4.0+上使用LocationRequestCompat进行融合定位。设备覆盖率在不增加最低SDK版本的情况下达到99%。

第四个优势——测试。AndroidX包含用于编写仪器测试和单元测试的androidx.test库。FragmentScenario和ActivityScenario允许隔离测试UI组件,TestNavHostController允许在不启动真实设备的情况下检查导航。MockK和Robolectric完善了生态系统。

常见问题

AndroidX与Support Library有什么区别?

AndroidX使用androidx.*命名空间代替android.support.*,具有独立版本控制(SemVer),包含Jetpack库并支持-ktx Kotlin扩展。Support Library于2019年在28.0.0版本被冻结。

如何在新项目中连接AndroidX?

Android Studio中,在创建项目步骤启用Use AndroidX标志。对于现有项目,在gradle.properties中添加android.useAndroidX=true和android.enableJetifier=true。然后将build.gradle中的依赖替换为androidx组的构件。

是否必须迁移到AndroidX?

Google Play要求所有应用和更新使用AndroidX。Support Library的支持已终止,不再接收安全修复。如果您的应用尚未迁移,可能导致更新在Google Play Console中被拒绝。

Android中的Jetpack是什么?

Jetpack是Google为Android应用开发提供的库、工具和建议集合。AndroidX是Jetpack的基础。Jetpack包括Architecture Components(Lifecycle、ViewModel、Room)、UI(Compose、Fragment、RecyclerView)和Behavior(WorkManager、Navigation、CameraX)。

AndroidX可以与Jetpack Compose一起使用吗?

是的,Jetpack Compose本身是AndroidX的一部分(androidx.compose.ui)。ViewModel、Navigation、Room和WorkManager库与Compose完全兼容。collectAsState()和collectAsStateWithLifecycle()函数确保了Flow与Compose函数的集成。

总结

  • AndroidX — 现代Jetpack库集,Support Library的继承者,采用语义化版本控制
  • 超过100个模块涵盖UI、数据、导航、后台任务、多媒体和测试
  • Android Studio中的自动迁移只需几次点击即可替换导入和依赖
  • Kotlin扩展-ktx减少了样板代码并与协程和Flow集成
  • 与Android 4.0+的向后兼容性覆盖了99%的活跃设备
  • Jetpack将AndroidX与架构建议结合——ViewModel、Room、Navigation、WorkManager
  • 在所有新项目中使用AndroidX——这是自2019年以来的行业标准

我们将开发一款交钥匙移动应用程序

IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。

讨论项目

另请阅读