前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android Support vs AndroidX

Android Support vs AndroidX

作者头像
Ant丶
发布2022-03-01 20:01:39
1.1K0
发布2022-03-01 20:01:39
举报
文章被收录于专栏:cayzlhcayzlh

Android Support vs AndroidX

Android Support Library 的由来

Android 3.0 (API 11) 为了更好地兼容平板,加入了Fragment,而想让低版本的系统也能用上,需要做一个向下兼容,于是Android团队推出了Android Support Library。

老Android们熟知的下述库 (v后面的数字代表最低兼容API版本,如4对应Android 1.6) 都属于Android Support Library:

com.android.support:support-v4→ Android 1.6,包含Fragment、NotificationCompat等控件,包含v7和v11的基础功能,早期用到。 com.android.support:appcompat-v7:xx.xx→ Android 2.1,增加了很多Material Design的兼容类和素材,包含v4的全部内容,用得最多。 support-v13→ Android 3.2,为平板开发推出的版本兼容包,Android 3.x系统是平板专用系统,用得不多。

Android版本更新飞快,现在都Android 12了,国内APP基本都最少兼容Android 5.1 (API 21),这种v4、v7的命名早已没太大的意义。

AndroidX Library 的出现

从Android 9.0 (API 28) 开始,appcompat-v7:28.0.0 作为 Support Library的 终结版本,未来的新特性和改进都会进入AndroidX Library。升级内容主要有两个方面:

包名→ Support Library 中的API包名都是 android.support.,而AndroidX Library中的API都变成androidx.,意味着后续android.*包下的API都是随系统发布的,而androidx.包下的API都是随着扩展库发布的,API基本不依赖于操作系统的具体版本。 ②命名规则→ AndroidX Library 中所有的库命名规则不再包含具体的操作系统API版本号,如下面的appcompat-v7变成了appcompat库。

代码语言:javascript
复制
api 'com.android.support:appcompat-v7:28.0.0'
api 'androidx.appcompat:appcompat:1.0.0'

从Support 过渡到 AndroidX

一键迁移

AS 3.2及以上版本提供了一键迁移到AndroidX的功能,依次点击菜单栏的 Refactor → Migrate to AndroidX。

注:一键迁移,compileSdkVersion需大于等于28,否则会提示:You need to have at least have compileSdk 28 set in your module build.gradle to refactor to androidx。

如果迁移失败,就重复下面的①②③④步进行手动迁移吧~

① 版本要求

Android Studio → 升级到3.2及以上;

Gradle插件 → 升级到4.6及以上,可在gradle/wrapper/gradle-wrapper.propertie 中修改distributionUrl指向版本号;

compileSdkVersion → 升级到28及以上;

buildToolsVersion → 升级到28.0.2及以上;

② 迁移AndroidX配置

在项目的 gradle.properties 文件中添加下述配置:

代码语言:javascript
复制
# 当前项目启用androidx
android.useAndroidX=true

# 将依赖包也迁移到androidx,一般写true
# 如果设为false表不迁移依赖包到 androidx,如果有第三方依赖可能会出问题
android.enableJetifier=true
③ 修改依赖库

参照AndroidX变化中的依赖库映射改,可直接查官方文档:

https://developer.android.com/jetpack/androidx/migrate/artifact-mappings

或下载映射的CSV文件:

https://developer.android.com/topic/libraries/support-library/downloads/androidx-artifact-mapping.csv

修改示例如下:

代码语言:javascript
复制
implementation com.android.support:cardview-v7
替换成→ implementation  androidx.cardview:cardview

implementation com.android.support:collections
替换成 → implementation androidx.collection:collection

implementation com.android.support:coordinatorlayout
替换成 → androidx.coordinatorlayout:coordinatorlayout
④ 依赖类重新打包

参照AndroidX变化中的类映射改,可直接查官方文档:

https://developer.android.com/jetpack/androidx/migrate/class-mappings

或下载映射的CSV文件:

https://developer.android.com/topic/libraries/support-library/downloads/androidx-class-mapping.csv

修改示例如下:

代码语言:javascript
复制
import android.support.v7.app.AlertDialog    
修改成 → import androidx.appcompat.app.AlertDialog

import android.support.v7.app.AppCompatActivity
修改成 → import androidx.appcompat.app.AppCompatActivity

Tips:对了,还可能需要手动对混淆文件proguard-rules进行修改~

参考资料

分享计划

博客内容将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/

许可协议

本文采用 署名-非商业性使用-相同方式共享 4.0 国际 许可协议,转载请注明出处。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-11-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Android Support vs AndroidX
    • Android Support Library 的由来
      • AndroidX Library 的出现
        • 从Support 过渡到 AndroidX
          • 一键迁移
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档