Android源码中com.android.support依赖迁移到AndroidX库
Posted 彬sir哥
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android源码中com.android.support依赖迁移到AndroidX库相关的知识,希望对你有一定的参考价值。
文章目录
一、androidX 简介
1.Google(谷歌) 2018 IO 大会推出了 Android新的扩展库 AndroidX,用于替换原来的 Android扩展库,将原来的android替换成androidx;只有包名和Maven工件名受到影响,原来的类名,方法名和字段名不会更改。官方早就推荐将support库迁移到androidx,因为后续support库不会再做更新
2.AndroidX是对android.support.xxx包的整理后产物。由于之前的support包过于混乱,所以,Google推出了AndroidX
3.Android 版本 28.0.0 (9.0)是支持support库的最后一个版本
(1) 谷歌将不再发布android.support库版本。所有新功能都将在androidx命名空间中开发
(2) 所以Android 9.0 之前还可以使用support,Android 10.0之后要使用androidx了
(3) android对RecycleView有了优化,并且包名也改变了,还有其他控件support相关的控件都修改了包名
二、迁移步骤
1.修改当前项目的gradle.properties
android.useAndroidX=true
android.enableJetifier=true
其中:
(1) android.useAndroidX=true 表示当前项目启用AndroidX
(2) android.enableJetifier=true 表示将依赖包也迁移到AndroidX。如果取值为false,表示不迁移依赖包到AndroidX,但在使用依赖包中的内容时可能会出现问题,当然了,如果你的项目中没有使用任何三方依赖,那么,此项可以设置为false
三、Gradle
1.升级Gradle版本,修改gradle-wrapper.properties:
AndroidX最低支持的gradle版本是4.6,我这边直接5.1.1了;
distributionUrl=https\\://services.gradle.org/distributions/gradle-5.1.1-all.zip
2.升级插件版本
在主工程(Project)的bulid.gradle里,AndroidX最低支持的版本是3.2,我这边直接3.4.1了;
classpath 'com.android.tools.build:gradle:3.4.1'
3.修改SdkVersion
AndroidX最低支持28、28.0.2;
compileSdkVersion: 29
targetSdkVersion : 29
buildToolsVersion "29.0.0"
4.附带添加一下这个gradle.properties:
android.useAndroidX=true
android.enableJetifier=true
5.Gradle中的compileOptions
点击链接:Android Studio的Gradle中compileOptions的问题
6.使用Migrate to androidx
这波操做之后,你的项目就会有大变更了:
原来的android.xxx.xxx.28.0.2所有变为androidx.xxx.xxx.1.0.0;
下面的这些引入也会变化:
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import androidx.appcompat.widget.AppCompatTextView;
四、常用依赖库对比
1.常用依赖库对比
Old build artifact | AndroidX build artifact |
---|---|
com.android.support:appcompat-v7:28.0.2 | androidx.appcompat:appcompat:1.0.0 |
com.android.support:design:28.0.2 | com.google.android.material:material:1.0.0 |
com.android.support:support-v4:28.0.2 | androidx.legacy:legacy-support-v4:1.0.0 |
com.android.support:recyclerview-v7:28.0.2 | androidx.recyclerview:recyclerview:1.0.0 |
com.android.support.constraint:constraint-layout:1.1.2 | androidx.constraintlayout:constraintlayout:1.1.2 |
2.常用支持库类对比
Support Library class | AndroidX class |
---|---|
android.support.v4.app.Fragment | androidx.fragment.app.Fragment |
android.support.v4.app.FragmentActivity | androidx.fragment.app.FragmentActivity |
android.support.v7.app.AppCompatActivity | androidx.appcompat.app.AppCompatActivity |
android.support.v7.app.ActionBar | androidx.appcompat.app.ActionBar |
android.support.v7.widget.RecyclerView | androidx.recyclerview.widget.RecyclerView |
五、温馨提示:
1.除了修改build.gradle文件下的dependencies以外,还需要将layout文件中的包名更改。如果不清楚更改哪里的话,build一下就好了,按照报错的地方更改就即可
以上是关于Android源码中com.android.support依赖迁移到AndroidX库的主要内容,如果未能解决你的问题,请参考以下文章
如何在android源码中找到PackageManager类的具体实现
Binder 机制分析 Android 内核源码中的 Binder 驱动源码 binder.c ( googlesource 中的 Android 内核源码 | 内核源码下载 )