提问人:Harsh Nandwani 提问时间:9/28/2023 更新时间:9/28/2023 访问量:106
Jetpack Compose 应用程序在从以前的版本更新时崩溃
Jetpack Compose App crashed when updated from previous version
问:
我的应用在从以前的版本更新时崩溃,并出现异常:
java.lang.IllegalArgumentException:仅支持 VectorDrawables 和栅格化资源类型 ex. PNG、JPG
当新版本是全新安装时,它运行良好。仅当从旧版本更新时才会出现此问题。它在我的第二个活动中崩溃,我显示drawables文件夹中的图像,启动器活动工作正常。
这是我显示可绘制图像的方式:
Image( painter = painterResource(id = myDataClass.iconResId), contentDescription = "" )
myDataClass
是一个数据对象,在每次应用程序启动时,我都会使用 xml 可绘制资源 ID 初始化属性(因为它可以在每次应用程序启动时更改)。iconResId
我已正确完成升级: 新 apk 的 versionCode 大于旧 apk versionName 也是不同的字符串。
可能值得注意的是,新版本中添加了几个额外的可绘制对象,但没有删除旧的可绘制对象。
尝试调试并检查资源 ID 是否在 propery 中正确初始化。它正在正确初始化。iconResId
答:
签入您的文件,因为如果它是带有 xml 标签(如 等)的常规图像,则无法在 Jetpack Compose 中使用它。您应该使用 .png/.jpg/.webp 和其他支持的扩展名或通过工具导入的 svg 图像drawable
<shape/>
<layer-list/>
Vector Asset
在变量下附加您的图像/文件,我可以告诉您更多信息iconResId
评论
<shape>
<layer-list>
companyIconResIds.getResourceId(index, 0)
companyIconResIds.getResourceId(index, R.drawable.default_company_icon)
@Update
评论