使用Androidx的项目依赖使用support包的三方库为啥不报错
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Androidx的项目依赖使用support包的三方库为啥不报错相关的知识,希望对你有一定的参考价值。
参考技术A之前在使用support包的android项目中引用了使用androidx的三方库,会报异常。比如下面的glide。
其中glide在4.10.0开始使用了androidx。编译这个项目会报异常:
为什么要说这个呢?
因为有了上面的经验我就以为: 使用了Androidx的项目再依赖使用support包的三方库也会不兼容 其实并不会。
还是刚才的项目,只是将项目改为AndroidX的了,glide使用了4.8.0版本。
编译直接就过了。
我随机找了下4.8.0的glide些源码
可以看到,里面确实使用的是support的库。然后我将当前项目打成apk包,并反编译,看下最终glide使用的到底是support还是androidx的依赖。
看上面反编译的截图,ArrayMap这个已经被从android.support版本替换成adnroidx的了。
当androidx的项目中依赖了使用基于support的三方库,在编译后系统会将他替换成对应的androidx的依赖。所以不会存在兼容问题。反之,如果基于support的项目依赖了基于androidx的三方库,怎编译会报不能兼容的错误。
如果谁知道这个替换的流程,希望可以跟我分享下。
以上是关于使用Androidx的项目依赖使用support包的三方库为啥不报错的主要内容,如果未能解决你的问题,请参考以下文章
Android源码中com.android.support依赖迁移到AndroidX库
项目使用了androidx,但gradle引入的第三方库使用的是android.support,但是为啥运行却没有任何问题
Unity-Android(安卓)支持androidx(兼容andoridx)
程序包androidx.support.annotation不存在/import android.support.annotation.NonNull;报错
AndroidX迁移-androidx.legacy:legacy-support-v4或androidx.appcompat:appcompat
程序包androidx.support.annotation不存在/import androidx.v7.app.AppCompatActivity;报错