You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中Xcode Build Phases脚本执行报错如何解决?

问题分析

你遇到的错误是因为Widget Extension的Info.plist中缺少CFBundleVersion和CFBundleShortVersionString键,而PlistBuddy的Set命令仅能修改已存在的键,无法创建新键,导致脚本执行失败。

修复脚本

将原脚本替换为以下内容,它会先检查目标键是否存在,存在则更新,不存在则自动添加:

generatedPath="$SRCROOT/Flutter/Generated.xcconfig"
versionNumber=$(grep FLUTTER_BUILD_NAME $generatedPath | cut -d '=' -f2)
buildNumber=$(grep FLUTTER_BUILD_NUMBER $generatedPath | cut -d '=' -f2)

# 处理CFBundleVersion
/usr/libexec/PlistBuddy -c "Print :CFBundleVersion" "$SRCROOT/WidgetHome/Info.plist" > /dev/null 2>&1
if [ $? -eq 0 ]; then
    /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$SRCROOT/WidgetHome/Info.plist"
else
    /usr/libexec/PlistBuddy -c "Add :CFBundleVersion string $buildNumber" "$SRCROOT/WidgetHome/Info.plist"
fi

# 处理CFBundleShortVersionString
/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" "$SRCROOT/WidgetHome/Info.plist" > /dev/null 2>&1
if [ $? -eq 0 ]; then
    /usr/libexec/PlistBuddy -c "Set :CFBundleShortVersionString $versionNumber" "$SRCROOT/WidgetHome/Info.plist"
else
    /usr/libexec/PlistBuddy -c "Add :CFBundleShortVersionString string $versionNumber" "$SRCROOT/WidgetHome/Info.plist"
fi
额外验证步骤
  • 确认路径正确性:检查你的Widget Extension目标的Info.plist是否确实在$SRCROOT/WidgetHome/目录下,若Widget Extension名称不是WidgetHome,需对应修改脚本中的路径。
  • 手动检查plist文件:直接打开Widget Extension的Info.plist,确认是否包含Bundle version(对应CFBundleVersion)和Bundle versions string, short(对应CFBundleShortVersionString)字段。如果没有,也可以手动添加后再运行脚本。

内容的提问来源于stack exchange,提问作者Jonathan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 00:23:28