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

iOS 14.6环境下Crashlytics结合Swift Package Manager无法正常运行的问题及脚本优化咨询

Firebase Crashlytics with SPM: Fixing Run Script & Environment Separation

问题1:适配Swift Package Manager的Crashlytics正确运行脚本

你当前的脚本核心问题是Shell语法错误——方括号[与变量之间必须有空格,否则Shell会把["${CONFIGURATION}"当成一个不存在的命令,直接导致脚本执行失败,这是写Shell脚本时很容易踩的坑。

另外,${BUILD_DIR%Build/*}的路径在部分Xcode版本下稳定性不足,改用项目根目录变量${SRCROOT}来定位SPM的Crashlytics脚本会更可靠。

修正后的正确脚本如下:

if [ "${CONFIGURATION}" == "Release" ] || [ "${CONFIGURATION}" == "Debug" ]; then
  "${SRCROOT}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"
elif [ "${CONFIGURATION}" == "ReleaseDev" ] || [ "${CONFIGURATION}" == "DebugDev" ]; then
  "${SRCROOT}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run" -gsp "${PROJECT_DIR}/iOS/SupportFiles/GoogleService-InfoDev.plist"
fi

额外检查点:

  • 确保你已在App初始化代码中调用FirebaseApp.configure(),DEV环境下要传入对应的GoogleService-InfoDev.plist(PROD环境可直接用默认初始化)
  • 查看Xcode的Build Logs中Run Script阶段的输出,若有路径找不到或权限错误,可根据提示调整路径

问题2:优化DEV与PROD环境的清晰区分

靠硬编码CONFIGURATION值的方式不够灵活,后续新增环境时还要修改脚本。更优雅的方案是用Xcode自定义Build Settings变量统一管理配置文件路径:

步骤1:添加自定义Build Setting

  1. 选中项目Target,进入Build Settings标签页
  2. 点击左上角+按钮,选择Add User-Defined Setting
  3. 命名为FIREBASE_GOOGLE_SERVICE_PLIST_PATH
  4. 针对每个Configuration设置对应路径:
    • Debug/Release:$(PROJECT_DIR)/iOS/SupportFiles/GoogleService-Info.plist
    • DebugDev/ReleaseDev:$(PROJECT_DIR)/iOS/SupportFiles/GoogleService-InfoDev.plist

步骤2:简化Run Script

修改脚本为直接引用自定义变量,无需复杂的条件判断:

# 自动适配所有环境的简洁脚本
RUN_SCRIPT_PATH="${SRCROOT}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"
"${RUN_SCRIPT_PATH}" -gsp "${FIREBASE_GOOGLE_SERVICE_PLIST_PATH}"

如果希望PROD环境保持默认(不强制指定plist路径),也可以做个简单判断:

RUN_SCRIPT_PATH="${SRCROOT}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"
if [ -n "${FIREBASE_GOOGLE_SERVICE_PLIST_PATH}" ]; then
  "${RUN_SCRIPT_PATH}" -gsp "${FIREBASE_GOOGLE_SERVICE_PLIST_PATH}"
else
  "${RUN_SCRIPT_PATH}"
fi

这种方式的优势是:所有环境配置集中在Build Settings管理,脚本逻辑简洁,后续新增环境只需在Build Settings中添加对应值,无需修改脚本,维护成本更低。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 22:39:10