应用可在Android9-11正常运行,在Android6加载主Fragment时闪退如何解决
Android 6 系统应用加载MainFragment闪退原因分析
你遇到的报错是布局填充阶段ImageView实例化失败,高版本系统正常仅Android 6崩溃,常见原因如下:
- 矢量图适配缺失
你的项目compileSdk为30,若布局中ImageView使用了矢量图资源:- 若直接用
android:src属性加载矢量图,Android 6对矢量图的原生支持不完善,需要改用app:srcCompat属性,同时在gradle的android.defaultConfig节点下添加vectorDrawables.useSupportLibrary = true开启矢量图支持库适配 - 若矢量图资源仅放在
drawable-v24等高版本专属资源目录下,Android 6系统无法找到对应资源,会直接触发填充失败
- 若直接用
- 不兼容的图片格式
若ImageView加载的是无损/带透明通道的WebP格式图片,这类格式仅在Android 7.0(API 24)及以上系统原生支持,Android 6无法解析就会触发崩溃 - 主题属性不兼容
若ImageView的布局属性中引用了?attr/xxx类的主题属性,该属性仅在高版本主题中定义,Android 6对应主题下没有对应属性值,会导致布局填充失败 - AppCompat兼容问题
若承载Fragment的MainActivity没有继承AppCompatActivity,矢量图支持库的适配逻辑无法生效,同样会触发ImageView加载失败
内容的提问来源于stack exchange,提问作者Yischard Meynardi Borean
相关产品推荐
相关产品推荐

