Xcode 中 FirebaseAnalytics 的 dSYM 文件生成问题
问题描述
当在 Xcode 中验证或上传应用时,许多开发者遇到关于 FirebaseAnalytics 的 dSYM 文件警告:
plaintext
Upload Symbols Failed
The archive did not include a dSYM for the FirebaseAnalytics.framework with the UUIDs [D080D817-CA37-3B97-8A51-421A372C12DB].
Ensure that the archive's dSYM folder includes a DWARF file for FirebaseAnalytics.framework with the expected UUIDs.
此问题通常出现在以下环境中:
- Xcode 16(较新版本)
- 通过 Swift Package Manager 安装的 Firebase SDK(v10.28+)
- 已正确配置了
DWARF with dSYM File
调试信息格式 - 已添加 Firebase Run Script 构建阶段
根本原因
此问题主要由以下因素导致:
- Xcode 16 行为变更:新版本处理 dSYM 文件的方式发生变化
- 依赖冲突:Firebase SDK 内部模块(如 Crashlytics, Messaging)版本不兼容
- 构建设置问题:特定构建选项导致符号文件生成失败
解决方案
解决方案一:禁用依赖分析(首选)
- 在 Xcode 左侧导航器选择项目文件
- 转到
Build Settings > Build Options
- 将
Based on dependency analysis
设为 不勾选 (Unchecked) - 重新清理构建项目 (
Cmd+Shift+K
),然后重新归档
解决方案二:补充 dSYM 文件路径参数(通用)
修改 Run Script 的 Input Files 配置,在原有基础上添加:
json
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}.debug.dylib
解决方案三:更新 Firebase SDK 依赖
- 检查
Package.swift
中是否需要升级目标平台版本 - 更新最小 iOS 目标版本以满足最新 SDK 要求
- 确保使用的 Firebase 模块版本统一:
FirebaseAnalytics >= v10.29.0
FirebaseCrashlytics
与FirebaseMessaging
版本兼容
Kotlin Multiplatform 项目特别方案
修改 Run Script 路径为:
bash
"${SHARED_PRECOMPS_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"
验证配置
确保以下配置已正确应用:
bash
# Build Settings 确认
Debug Information Format = DWARF with dSYM File
# Run Script 输入文件校验
"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"
"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}"
"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist"
"$(TARGET_BUILD_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/GoogleService-Info.plist"
补充说明
如果问题仍存在:
- 清理构建缓存:bash
rm -rf ~/Library/Developer/Xcode/DerivedData/*
- 检查官方 GitHub 问题跟踪: Firebase iOS SDK Issue #13543
- 确认
GoogleService-Info.plist
中IS_ANALYTCS_ENABLED
值为YES
验证成功的关键指标
- 构建日志出现
Uploading dSYMs... success
提示 - 归档后 dSYMs 文件夹包含
FirebaseAnalytics.framework.dSYM
React Native 项目特别注意
若使用 React Native 0.75 以下版本且启用 Hermes,需升级至 RN v0.76+
bash
npx react-native upgrade 0.76.0