1. AndroidX 是什么?

  • AndroidX 是 Android 团队用于在Jetpack中开发、测试、打包和发布库以及对其进行版本控制的开源项目。[摘自官方]

  • AndroidX 完全取代了支持库,不仅提供同等的功能,而且提供了新的库。

  • AndroidX 会将原始支持库 API 软件包映射到 androidx 命名空间。只有软件包和 Maven 工件名称发生了变化;类、方法和字段名称没有改变。

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

  • 所有新支持库的开发工作都将在 AndroidX 库中进行,这包括维护原始支持库工件和引入新的 Jetpack 组件。

AndroidX 的变化

1. 常见依赖库映射

旧编译工件AndroidX 编译工件
com.android.support.constraint:constraint-layoutandroidx.constraintlayout:constraintlayout:1.1.2
com.android.support:appcompat-v7androidx.appcompat:appcompat:1.0.0
com.android.support:cardview-v7androidx.cardview:cardview:1.0.0
com.android.support:coordinatorlayoutandroidx.coordinatorlayout:coordinatorlayout:1.0.0
com.android.support:designcom.google.android.material:material:1.0.0-rc01
com.android.support:drawerlayoutandroidx.drawerlayout:drawerlayout:1.0.0
com.android.support:gridlayout-v7androidx.gridlayout:gridlayout:1.0.0
com.android.support:media2androidx.media2:media2:1.0.0-alpha03
com.android.support:multidexandroidx.multidex:multidex:2.0.0
com.android.support:percentandroidx.percentlayout:percentlayout:1.0.0
com.android.support:recyclerview-v7androidx.recyclerview:recyclerview:1.0.0
com.android.support:support-annotationsandroidx.annotation:annotation:1.0.0
com.android.support:support-compatandroidx.core:core:1.0.0
com.android.support:support-fragmentandroidx.fragment:fragment:1.0.0
com.android.support:support-v4androidx.legacy:legacy-support-v4:1.0.0
com.android.support:viewpagerandroidx.viewpager:viewpager:1.0.0
com.android.support:swiperefreshlayoutandroidx.swiperefreshlayout:swiperefreshlayout:1.0.0

更多详细依赖库变化,可查阅官方文档(https://developer.android.com*/jetpack/androidx/migrate#artifact_mappings*)或下载这些映射的 CSV 格式(https://developer.android.com* /topic/libraries/support-library/downloads/androidx-artifact-mapping.csv*)文件。

2.常见类映射

支持库类AndroidX 类
android.arch.lifecycle.Lifecycleandroidx.lifecycle.Lifecycle
android.support.v4.app.Fragmentandroidx.fragment.app.Fragment
android.support.v4.app.FragmentActivityandroidx.fragment.app.FragmentActivity
android.support.v7.app.AppCompatActivityandroidx.appcompat.app.AppCompatActivity
android.support.v7.app.ActionBarandroidx.appcompat.app.ActionBar
android.support.v7.widget.RecyclerViewandroidx.recyclerview.widget.RecyclerView
android.support.design.card.MaterialCardViewcom.google.android.material.card.MaterialCardView
android.support.design.ripple.RippleUtilscom.google.android.material.ripple.RippleUtils
android.support.design.widget.CoordinatorLayoutandroidx.coordinatorlayout.widget.CoordinatorLayout
android.support.design.widget.NavigationViewcom.google.android.material.navigation.NavigationView
android.support.percent.PercentFrameLayoutandroidx.percentlayout.widget.PercentFrameLayout

更多详细支持类映射变化,可查阅官方文档(https://developer.android.com*/jetpack/androidx/migrate#artifact_mappings*)或下载这些映射的CSV 格式(https://developer.android.com* /topic/libraries/support-library/downloads/androidx-class-mapping.csv*)文件。

2. 为什么要迁移 AndroidX?

下面是 Google 官方描述

Existing packages, such as the Android Support Library, are being refactored into AndroidX.

Although Support Library versions 27 and lower are still available on Google Maven,

all new development will be included in only AndroidX versions 1.0.0 and higher.

  • 大致意思是:现有的软件包,如 Android 支持库,正在被重构为 Androidx。尽管在 Google Maven 上仍然提供支持库版本 27 及更低版本,但所有新开发将只包含在 Androidx 1.0.0 及更高版本中。

3. AndroidX 迁移步骤?

1. 更新 Android Studio 与 Gradle 版本

  • 将 Android studio 升级到 3.2 及以上;

  • Gradle 插件版本改为 4.6 及以上;

  • compileSdkVersion 版本升级到 28 及以上;

  • buildToolsVersion 版本改为 28.0.2 及以上。

2. 迁移 AndroidX 配置

  • 在项目的gradle.properties文件里添加如下配置:

android.useAndroidX=trueandroid.enableJetifier=true

配置说明
android.useAndroidX=true表示当前项目启用 androidx
android.enableJetifier=true表示将依赖包也迁移到androidx

备注:enableJetifier 如果取值为 false, 表示不迁移依赖包到 androidx,但在使用依赖包中的内容时可能会出现问题,当然了,如果你的项目中没有使用任何三方依赖,那么,此项可以设置为 false。

3. 修改依赖库

修改项目 app 目录下的 build.gradle 依赖库,具体可以参照 AndroidX 变化中的依赖库映射。

修改前修改后
implementation ‘com.android.support:appcompat-v7:28.0.2’implementation ‘androidx.appcompat:appcompat:1.0.0’
implementation ‘com.android.support:design:28.0.2’implementation ‘com.google.android.material:material:1.0.0’
implementation ‘com.android.support.constraint:constraint-layout:1.1.2’implementation ‘androidx.constraintlayout:constraintlayout:1.1.2’

4. 依赖类重新导包

将原来 import 的 android.** 包删除,重新 import 新的 androidx.** 包

import android.support.v7.app.AppCompatActivity; → import androidx.appcompat.app.AppCompatActivity;

5. 一键迁移 AndroidX 库

AS 3.2 及以上版本提供了更加方便快捷的方法一键迁移到 AndroidX。选择菜单上的 ReFactor —— Migrate to AndroidX… 即可。(如果迁移失败,就需要重复上面 1,2,3,4 步手动去修改迁移)

备注:如果你的项目 compileSdkVersion 低于 28,点击 Refactor to AndroidX… 会提示:

Q&A

  • 同一个项目中 Android Support 和 AndroidX 可以共存吗?

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

资源分享

  • 最新大厂面试专题

这个题库内容是比较多的,除了一些流行的热门技术面试题,如Kotlin,数据库,Java虚拟机面试题,数组,Framework ,混合跨平台开发,等

  • 对应导图的Android高级工程师进阶系统学习视频
    最近热门的,NDK,热修复,MVVM,源码等一系列系统学习视频都有!

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!

K,热修复,MVVM,源码等一系列系统学习视频都有!

[外链图片转存中…(img-h4AKqyAn-1712218893926)]

《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐