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

使用Carthage迁移FirebaseCrashlytics时缺失run/upload_symbols脚本求助

解决Carthage下FirebaseCrashlytics缺失run/upload-symbols脚本的问题

我之前用Carthage迁移FirebaseCrashlytics的时候也踩过这个坑!原因很简单:Carthage默认只会把.framework文件拉取到项目依赖目录里,而Firebase的这两个关键脚本是和framework放在同级目录的,不会被自动导入到项目中。给你几个实测有效的解决方案:

方案一:手动拷贝脚本(快速解决)

  1. 找到Carthage下载的FirebaseCrashlytics资源包(一般在Carthage/Build/iOS目录下,或者你手动下载的对应版本压缩包)
  2. 解压后,把根目录下的run和upload-symbols脚本拷贝到你的项目目录里(建议新建一个Scripts文件夹统一存放,避免杂乱)
  3. 在Xcode的Build Phases中配置Run Script时,直接引用拷贝后的脚本路径,示例:
    "${PROJECT_DIR}/Scripts/run"
    
    上传符号的脚本同理,记得同步配置好GoogleService-Info.plist的路径参数。

方案二:自定义Carthage构建脚本(自动同步)

如果不想每次更新依赖都手动拷贝,可以写个简单脚本自动同步:

  1. 在项目根目录创建carthage-build.sh文件
  2. 写入以下内容,构建完成后自动复制脚本到指定目录:
    #!/bin/bash
    carthage update "$@"
    # 复制run和upload-symbols到项目Scripts目录
    cp -r Carthage/Build/iOS/FirebaseCrashlytics.framework/../{run,upload-symbols} "${PROJECT_DIR}/Scripts/"
    
  3. 给脚本添加执行权限:chmod +x carthage-build.sh
  4. 以后用./carthage-build.sh代替原生的carthage update/carthage bootstrap命令,就能自动同步脚本了。

方案三:使用XCFramework格式依赖(推荐)

如果你使用的是较新版本的Firebase和Carthage,试试切换到XCFramework格式:

  1. 执行构建命令:carthage update FirebaseCrashlytics --use-xcframeworks
  2. 此时你会在Carthage/Build/FirebaseCrashlytics.xcframework的同级目录找到run和upload-symbols脚本
  3. 在Xcode的Build Phases里直接引用这个路径即可,示例:
    "${PROJECT_DIR}/Carthage/Build/run"
    
    这个方法最省心,XCFramework的结构会把脚本和框架放在同一层级,Carthage会完整拉取整个目录。

另外提个小细节:如果配置后脚本提示权限问题,可以在Run Script的开头加一句chmod +x "${PROJECT_DIR}/Scripts/run"来确保脚本可执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 09:57:47