Android Studio集成Lottie动画报Unable to parse composition错误如何解决?
问题根因分析
你的崩溃报错核心是Lottie解析动画文件失败,从异常栈Caused by: java.lang.StringIndexOutOfBoundsException: length=0; index=0 以及Color.parseColor的报错位置可以定位:你使用的Lottie JSON动画文件中存在无效的空颜色值,导致系统解析颜色时出错。设计界面的Unexpected resource type: raw报错属于Android Studio的缓存类误报,不影响实际运行,不用优先处理。
排查解决步骤
第一步:修复Lottie JSON文件
- 首先确认你下载的JSON文件完整:打开本地的
confetti.json文件,检查是否存在内容缺失、末尾截断的情况,lottiefiles下载时如果网络异常会生成不完整的损坏文件。 - 搜索JSON文件中的颜色属性字段,查找所有取值为空字符串的颜色值(格式类似
"c":""),将空值替换为合法的十六进制颜色值,比如"#FFFFFF"即可。 - 可以新建空白测试项目,只引入Lottie依赖和该JSON文件测试,如果测试项目也崩溃,100%可以确定是动画文件本身的问题,换一个其他的Lottie动画文件测试即可验证。
- 首先确认你下载的JSON文件完整:打开本地的
第二步:清除预览报错
按以下操作清除Android Studio缓存即可解决设计界面的误报:- 点击顶部菜单
File -> Invalidate Caches... - 勾选
Clear file system cache and local history,点击Invalidate and Restart,重启IDE后报错就会消失。
- 点击顶部菜单
第三步:可选兼容调整
如果确认文件没问题还是运行失败,可以尝试以下优化:- 将JSON文件放到
app/src/main/assets文件夹下,布局属性换为app:lottie_fileName="confetti.json"引用,不需要加任何路径前缀。 - 降级Lottie版本到兼容性更好的3.7.0版本,部分高版本Lottie对老格式动画的适配存在问题:
implementation "com.airbnb.android:lottie:3.7.0" - 检查项目
build.gradle是否开启了资源混淆/压缩,如果开启需要把raw、assets下的Lottie文件加入白名单,避免资源被篡改。
- 将JSON文件放到
内容的提问来源于stack exchange,提问作者anne
相关产品推荐
相关产品推荐

