java.lang.NoSuchFieldError: No static field abc_text_select_handle_left_mtrl_dark of type I in class Landroidx/appcompat/R$drawable; or its superclasses (declaration of 'androidx.appcompat.R$drawable' appears in /data/app/
现象:项目升级插件后,skin-support插件为做换肤时,报错导致应用崩溃。报错详情如下图。

问题分析:
报错提示是找不到资源 abc_text_select_handle_left_mtrl_dark,找开 androidx.appcompat 源码,发现在res资源中,的确找不到该资源。 (版本是1.5.0)
降低版本 androidx.appcompat 版本到1.2.0后,正常。打开源码,发现在res/drawable-***-v4/目录下存在 abc_text_select_handle_left_mtrl_dark.png 文件。 所以得出结论,skin-support不能支持高版本的androidx库。
解决方法:强制项目使用低版本androidx库。在项目build.gradle文件中,编写如下图配置

**************************追加类似问题********************************

使用skin.support对 底部导航栏进行换肤时,报错。原因与上述问题一样,都是找不到资源,因为 com.google.android.material 版本过高,找不到资源路径。
所以强制使用低版本即可解决,如下图:

博客讲述了在项目升级后,由于skin-support插件与高版本的androidx.appcompat库存在资源不匹配的问题,导致应用崩溃。作者通过分析源码发现特定资源在高版本中缺失,而在低版本中存在。解决方法是强制项目使用低版本的androidx库。此外,类似问题出现在使用skin.support对底部导航栏换肤时,因com.google.android.material版本过高找不到资源,同样通过降级解决。



247

被折叠的 条评论
为什么被折叠?



