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

Xcode Cloud上传dSYM至Firebase Crashlytics后版本显示未知怎么办?

解决Xcode Cloud上传dSYM到Firebase Crashlytics后版本显示“未知”的问题

我通过Xcode Cloud使用ci_post_xcodebuild.sh脚本自动上传dSYM文件到Firebase Crashlytics,脚本内容如下,但在Firebase控制台中,已上传的dSYM版本显示为“未知”。我试过压缩dSYM文件夹上传,也想手动设置版本,但upload-symbols工具没有这个选项,该怎么解决?

脚本内容

#!/bin/sh

set -e
if [[ -n $CI_ARCHIVE_PATH ]];
then
    echo "Archive path is available. Let's run dSYMs uploading script"
    # Move up to parent directory
    cd ..
    echo "Archive path: $CI_ARCHIVE_PATH"
    echo "Bundle ID: $CI_BUNDLE_ID"
    echo "Build number: $CI_BUILD_NUMBER"
    echo "Derived data path: $CI_DERIVED_DATA_PATH"

    # Crashlytics dSYMs scripts
    if [ $CI_BUNDLE_ID = "com.example.com" ]
    then
        echo "This is a production build."
        $CI_DERIVED_DATA_PATH/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/upload-symbols -gsp enovcanik-ios/App/Production/GoogleService-Info.plist -p ios $CI_ARCHIVE_PATH/dSYMs/
    else
        echo "This is a staging build."
        $CI_DERIVED_DATA_PATH/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/upload-symbols -gsp enovcanik-ios/App/Staging/GoogleService-Info.plist -p ios $CI_ARCHIVE_PATH/dSYMs/
    fi
else
    echo "Archive path isn't available. Unable to run dSYMs uploading script."
fi

解决方案

  • 确认dSYM文件包含正确版本信息:dSYM的版本信息来自编译时的CFBundleVersion和CFBundleShortVersionString,检查Xcode项目对应Target的Info.plist是否正确配置这两个字段,同时在Xcode Cloud构建日志中搜索这两个字段,确认编译产物携带了正确的版本号。

  • 修复脚本路径问题:脚本中cd ..的目录切换可能导致-gsp参数的相对路径失效,建议改用基于CI_PROJECT_DIR(Xcode Cloud项目根目录环境变量)的绝对路径,比如把GoogleService-Info.plist的路径改为:

    $CI_PROJECT_DIR/enovcanik-ios/App/Production/GoogleService-Info.plist
    

    避免路径切换带来的文件找不到问题,确保upload-symbols能正确关联App配置。

  • 验证dSYM的版本数据:上传前用dwarfdump工具检查dSYM是否包含版本信息,执行以下命令:

    # 查看dSYM的UUID(用于和Firebase控制台匹配)
    dwarfdump --uuid $CI_ARCHIVE_PATH/dSYMs/*.dSYM
    # 检查是否包含CFBundleVersion信息
    dwarfdump --debug-info $CI_ARCHIVE_PATH/dSYMs/*.dSYM | grep -A 2 -B 2 "CFBundleVersion"
    

    如果能输出版本号,说明dSYM本身没问题;若输出为空,需检查Xcode的Archive配置是否开启了正确生成dSYM的选项(Build Settings -> Debug Information Format设为DWARF with dSYM File)。

  • 更新Firebase SDK版本:旧版本的upload-symbols可能存在版本识别缺陷,将Firebase Crashlytics SDK升级到最新稳定版,确保使用的上传工具是最新的。

  • 等待崩溃上报匹配:如果App还没有向Firebase上报过对应版本的崩溃,dSYM的版本可能会显示“未知”,可以手动触发一次测试崩溃并上报,之后再查看控制台的dSYM版本状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 13:16:16