一次解决找不到 android.support.v7.XXX 问题

对于类似以下错误

Error inflating class android.support.v7.widget.RecyclerView
Didn’t find class “android.support.v7.widget.RecyclerView”

Error inflating class android.support.v7.widget.Toolbar
Didn’t find class “android.support.v7.widget.Toolbar”

Error inflating class android.support.v7.widget.appcompat
Didn’t find class “android.support.v7.widget.appcompat”

很有可能是因为android.support的v4、v7版本混乱冲突导致的

网上其他解决办法都导向统一版本号、清除缓存重新加载等方式,这里提供一种最新方法:改用androidx


AndroidX与support包的关系

androidx 是对 android.support.xxx 包的整理后产物。由于之前的support包过于混乱,所以,google推出了 androidX。

新的Android扩展库(AndroidX)取代了使用七年之久的Android支持库,旨在简化相关工作,并为该库未来的发展打下坚实的基础。
Android支持库允许开发人员在旧版本的Android上支持新的OS特性,或者回退到等效的功能,是一种可以部分地减轻Android生态系统碎片化的有效方式。按照谷歌的说法:

然而,在其自然发展的过程中,出现了多个让许多开发人员为之困惑的选项。其中一个例子是存在以“v7”命名的组件和包,这是该库需要的原始Android SDK级别,目前需要的最小版本是14(Android 4.0)。

自2018年5月Androidx发布少量组件不够稳定的alpha测试版一年后,已经完成多个组件的稳定版并持续更新中
更多信息可参考Androidx官方文档


Androidx使用方式

*更新:使用 Android Studio 迁移现有项目

使用 Android Studio 3.2 及更高版本,您只需从菜单栏中依次选择 Refactor > Migrate to AndroidX,即可将现有项目迁移到 AndroidX。

重构命令使用两个标记。默认情况下,这两个标记在 gradle.properties 文件中都设为 true:

android.useAndroidX=true

  Android 插件会使用对应的 AndroidX 库而非支持库。

android.enableJetifier=true

  Android 插件会通过重写现有第三方库的二进制文件,自动将这些库迁移为使用 AndroidX。

注意:内置的 Android Studio 迁移功能可能并不能完成所有操作。根据您的构建配置,您可能需要手动更新构建脚本和 Proguard 映射。*


原方式:手动更改组件

在build.gradle中用

implementation 'androidx.xxx(组件名):xxx(组件名):1.0.0(版本号)'

替换

implementation 'com.android.support.v7.widget.xxx(组件名):x.x.x(版本号)'

并在xml文件中用

<androidx.xxx.widget.xxx(驼峰)
        ...>
</androidx.xxx.widget.xxx(驼峰)>

替换对应组件标签

<android.support.v7.widget.xxx
        ...>
</android.support.v7.widget.xxx>

例:recyclerView

在build.gradle中用

implementation 'androidx.recyclerview:recyclerview:1.0.0'

替换

implementation 'com.android.support:recyclerview-v7:x.x.x'

并在xml文件中用

<androidx.recyclerview.widget.RecyclerView
        ...>
</androidx.recyclerview.widget.RecyclerView>

替换对应组件标签

<android.support.v7.widget.RecyclerView
        ...>
</android.support.v7.widget.RecyclerView>

由于Androidx中是对于support包的整合升级,可能还需要修改组件相应代码,如recyclerView组件中,若使用还需要在Activity/fragment的代码中修改

manager.setOrientation(LinearLayoutManager.VERTICAL);

的参数 LinearLayoutManager.VERTICALRecyclerView.VERTICAL


其他不同组件版本号及命名方式可能各不相同,具体可参考Androidx官方文档

  • 16
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值