Flutter iOS模拟器编译失败:ICU语法警告问题求助
解决Flutter iOS编译失败(ICU复数语法错误)
1. 修复致命的ICU复数语法错误
编译失败的直接原因是intl_am.arb文件中rallyAlertsMessageUnassignedTransactions字段的复数规则存在重复定义,导致后续复数部分覆盖了前面的规则。
- 找到项目
lib/l10n/目录下的intl_am.arb文件 - 定位到
rallyAlertsMessageUnassignedTransactions字段,检查复数格式:
正确的ICU复数格式示例:"rallyAlertsMessageUnassignedTransactions": "{count, plural, =0{No unassigned transactions} =1{1 unassigned transaction} other{{count} unassigned transactions}}", - 删除重复的复数键(比如同时存在
=1和one,或者重复的数值键),确保每个复数类型(=0、=1、one、other等)仅出现一次 - 保存文件后重新执行编译
2. 处理未翻译消息警告(可选)
未翻译消息属于警告,不影响编译,但如果需要消除:
- 在项目根目录的
l10n.yaml中添加配置:untranslated-messages-file: untranslated_messages.txt - 执行命令
flutter gen-l10n,生成未翻译消息的报告文件 - 根据报告补充对应语言的翻译,或在
l10n.yaml中指定仅需支持的语言:supported-locales: - en - zh_CN # 保留需要的语言,移除不需要的条目
3. 额外排查步骤
若修复后仍编译失败:
- 执行
flutter clean清理项目缓存 - 进入ios目录,执行
pod deintegrate && pod install重新安装依赖 - 重启Xcode和模拟器后再次尝试编译
内容的提问来源于stack exchange,提问作者Ujith Isura
相关产品推荐
相关产品推荐

