Relay导入Figma组件后Android Studio无ui-packages且构建报错
问题:Relay转换Figma设计时SVG资源转换报错
按照官方教程将Figma设计转换为Android Studio代码,完成前序步骤后在第7步遇到以下问题:
- 点击Relay插件的create按钮后,预期生成的
ui-packages文件夹未显示; - 执行
build and refresh时出现构建报错:
Execution failed for task ':app:generateDebugRelayCode'. > A failure occurred while executing com.google.d2c.gradle.GenerateCode$GenerateCodeWorkAction > Converting SVG files: Exception Converting SVG resources for hello_card. * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights.
已通过关闭Android Studio、删除文件系统中存在但IDE未显示的ui-packages文件夹、重复教程1-7步骤解决了ui-packages显示问题,但仍存在上述SVG转换相关的构建报错。
可能的原因及解决方法
1. Figma导出的SVG存在Android不兼容特性
Relay对SVG的支持有局限性,Figma导出的SVG可能包含Android不支持的元素,比如复杂滤镜、特殊路径命令、非标准渐变等,这些都会导致转换失败。
- 解决步骤:
- 打开Figma中的
hello_card组件,检查所有SVG元素,移除滤镜、替换复杂渐变为纯色或线性渐变; - 手动导出SVG时,取消勾选
Include id attributes和Include vector data选项,导出后替换项目中对应文件; - 若为图标类SVG,可先将其转换为Android Vector Drawable格式,再导入项目使用。
- 打开Figma中的
2. Relay插件或Gradle依赖版本不兼容
旧版本Relay插件可能存在SVG转换bug,或者项目Gradle依赖与Relay版本不匹配,导致构建失败。
- 解决步骤:
- 将Android Studio中的Relay插件更新至最新稳定版;
- 确保项目根目录
build.gradle中Relay的classpath版本与插件版本一致; - 执行
./gradlew clean清理构建缓存,再重新执行build and refresh。
3. 同步生成的SVG文件损坏或路径错误
重新生成ui-packages后,其中的SVG文件可能仍存在损坏,或者Relay解析文件路径时出错。
- 解决步骤:
- 打开文件系统中
ui-packages下hello_card对应的SVG文件,用浏览器验证是否能正常打开,若无法打开则重新从Figma同步; - 检查
relay.properties配置文件中的Figma组件路径是否正确,无拼写错误; - 删除
ui-packages文件夹后,重新执行Relay的create操作,确保同步过程无中断。
- 打开文件系统中
4. 构建环境配置异常
Android Studio构建环境的缓存或配置问题,可能导致Relay的SVG转换工具无法正常运行。
- 解决步骤:
- 执行
./gradlew generateDebugRelayCode --stacktrace获取详细报错堆栈,定位具体失败原因; - 确认项目
compileSdkVersion为Android 13及以上版本(Relay的最低要求); - 通过
File > Invalidate Caches... > Invalidate and Restart清除IDE缓存并重启。
- 执行
内容的提问来源于stack exchange,提问作者user18476546
相关产品推荐
相关产品推荐

