求助:Firebase Crashlytics崩溃报告打包后无法上报
解决Crashlytics崩溃报告无法提交(403错误)的方案
看起来你遇到的403错误是Crashlytics无法正确验证应用身份导致的,结合你多Scheme多Firebase应用的场景,大概率是配置脚本的执行时机或参数匹配出了问题。下面是几个针对性的解决方案:
1. 确认Build Phases的脚本执行顺序
首先要保证你的plist拷贝脚本在Fabric/run脚本之前执行,且位于Copy Bundle Resources之后。因为Copy Bundle Resources会把默认的GoogleService-Info.plist拷贝到app包中,你的脚本需要替换这个文件,之后Fabric/run才能读取到正确的配置。
调整步骤:
- 打开Xcode的Target设置,进入
Build Phases标签 - 拖拽你的拷贝脚本到
Run Script(即Fabric/run所在的脚本)上方,同时确保它在Copy Bundle Resources下方
2. 给Fabric/run直接指定API Key和Build Secret(推荐)
多应用场景下,依赖plist拷贝的方式容易出现时机问题,不如直接在run命令中指定对应Scheme的API Key和Build Secret,彻底避免配置不匹配的问题。
修改你的脚本:
if [ "${CONFIGURATION}" = "Debug" ]; then echo "Debug" # 替换为Debug对应Firebase应用的API Key和Build Secret "${PODS_ROOT}/Fabric/run" YOUR_DEBUG_APP_API_KEY YOUR_DEBUG_APP_BUILD_SECRET elif [ "${CONFIGURATION}" = "Release" ]; then echo "Release" # 替换为Release对应Firebase应用的API Key和Build Secret "${PODS_ROOT}/Fabric/run" YOUR_RELEASE_APP_API_KEY YOUR_RELEASE_APP_BUILD_SECRET fi
你可以从Firebase控制台对应应用的Crashlytics设置页面找到这些密钥。
3. 验证拷贝后的plist是否正确
在拷贝脚本中添加验证步骤,确保文件被正确拷贝到目标路径:
if [ "${CONFIGURATION}" = "Debug" ]; then echo "Debug" cp "${PROJECT_DIR}/GoogleServices/GoogleService-Info.aaaa.plist" "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/GoogleService-Info.plist" # 验证文件是否存在并打印路径 if [ -f "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/GoogleService-Info.plist" ]; then echo "Successfully copied Debug plist to: ${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/GoogleService-Info.plist" else echo "Failed to copy Debug plist!" fi elif [ "${CONFIGURATION}" = "Release" ]; then # 同理添加Release的验证逻辑 ... fi
构建后查看控制台输出,确认拷贝是否成功。
4. 清理缓存并重新构建
旧缓存可能导致配置残留,执行以下步骤:
- 终端执行
pod deintegrate,再执行pod install重新安装依赖 - Xcode中按下
Cmd+Shift+K清理构建缓存 - 重启Xcode,重新构建并测试崩溃
5. 检查Firebase应用配置
确保每个Scheme对应的Firebase应用已正确启用Crashlytics:
- 登录Firebase控制台,进入对应应用
- 确认Crashlytics已完成初始化设置,应用的Bundle ID与Xcode中Target的Bundle ID完全匹配
内容的提问来源于stack exchange,提问作者morizotter
相关产品推荐
相关产品推荐

