Firebase Crashlytics:缺少 dsym 文件

问题描述 投票:0回答:5

我们已从fabric.io 迁移到Firebase,现在dsym 文件总是丢失。本手册试图提供帮助,但我不太明白:

手册:https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports?authuser=0&platform=ios

那么我到底需要在构建阶段实现哪一行才能自动执行?这个? 查找 dSYM_directory -name "*.dSYM" | xargs -I {} $PODS_ROOT/Fabric/upload-symbols -gsp /path/to/GoogleService-Info.plist -p 平台 {}

但是我的其他问题:如何找到我的 dsym_directory?我的意思是每个版本的情况都是不同的,不是吗?它还说:

重要提示:如果您正在使用之前链接的应用程序 从 Fabric 到 Firebase Crashlytics,将您的 Fabric API 密钥传递到 运行上传符号脚本。也就是说,在下面的选项中 运行脚本,使用 -a Fabric-api-key 而不是 -gsp 路径/到/GoogleService-Info.plist。

那么这是否意味着我可以使用变量fabric-api-key,还是需要用我的密钥替换它?有人可以帮助我并给出我必须插入构建阶段的确切行吗?

xcode firebase crashlytics
5个回答
10
投票

2020 年 5 月 28 日 对我来说,我会按照这些步骤进行操作,直到 dsym 问题得到解决。

首先将 Firebase Crashlytics 添加到您的应用程序中:

打开您为 Firebase 项目创建的 podfile 并添加 FirebaseCrashlytics pod

pod“Firebase/Crashlytics”

pod“Firebase/分析”

然后应用:pod install'

  1. 创建两个脚本,如图所示:

    在第一个脚本中写入下一个命令:

    “${PODS_ROOT}/FirebaseCrashlytics/run”

并在输入文件中添加两个输入文件:

  • ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}

  • $(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)

在第二个脚本中写入下一个命令:

"find ${DWARF_DSYM_FOLDER_PATH}" -name "*.dSYM" | xargs -I \{\} "$PODS_ROOT/Fabric/upload-symbols" -gsp "$PODS_ROOT/../GoogleService-Info.plist" -p ios \{\}

如果至少在您第一次需要通过终端上传 dSYM 文件时 dSYM 无法与您配合。


以下步骤说明了如何将 dSYM 文件上传到 Firebase:

  1. 从 iTunes Connect 下载 .dSYM:
  2. 提取您从 iTunes Connect 下载的“appDsyms”。
  3. 从终端运行脚本以上传 dSYM

/您的项目路径/Pods/FirebaseCrashlytics/upload-symbols -gsp /GoogleService-Info.plist 的路径/GoogleService-Info.plist -p ios /appDsyms 文件夹的路径/appDsyms


6
投票

我在脚本之前使用 find ${DWARF_DSYM_FOLDER_PATH}" -name "*.dSYM" 来查找 dsym。

"find ${DWARF_DSYM_FOLDER_PATH}" -name "*.dSYM" | xargs -I \{\} "$PODS_ROOT/Fabric/upload-symbols" -gsp "$PODS_ROOT/../GoogleService-Info.plist" -p ios \{\}


4
投票

对于那些在 AppStoreConnect 中没有找到 Activity 的人。

从 AppStoreConnect 手动下载 .dSYMs 文件:

  • 登录AppStoreConnect
  • 选择我的应用程序,然后选择您的应用程序
  • 然后点击Testflight,然后点击Build Number
  • 然后单击 Build Metadata,您会看到右下角单击 Download dSYMs

4
投票

斯威夫特 5 如何上传 dSYMs 文件夹 dSYMs 文件夹上传简单方法只需 3 个步骤

代码用这个改变你的路径

/Users/Apple/Documents/OfficeProject/Ratainoo/retainoo-ios/Pods/FirebaseCrashlytics/upload-symbols -gsp /Users/Apple/Documents/OfficeProject/Ratal noo/retainoo-ios/Retainoo/GoogleService-Info.plist-pios/Users/Apple/Downloads/dSYMs

步骤 1 从您的应用商店帐户下载

第2步输入路径

第3步上传成功后


1
投票

确保 dsyn 正确上传的替代脚本

  1. 转到“构建阶段”
  2. 在+ ->“NewRun Script Phase”中创建新脚本
  3. 检查它总是最后一个
  4. 复制并粘贴此脚本
set -e

echo "info: Exec Upload dSYM"
#Path for google service .plist 
GOOGLE_SERVICE_INFO_PLIST="${BUILT_PRODUCTS_DIR}/${FULL_PRODUCT_NAME}/GoogleService-Info.plist"
#Path for DSYM directory
DSYM_PATH="$DWARF_DSYM_FOLDER_PATH/dddd/$DWARF_DSYM_FILE_NAME"
#Firebase command script
CMD=""
if [[ ${PODS_ROOT} ]]; then
  echo "info: Exec FirebaseCrashlytics Run from Pods"
  CMD="$PODS_ROOT/FirebaseCrashlytics/upload-symbols"
else
  echo "info: Exec FirebaseCrashlytics Run from framework"
  CMD="$PROJECT_DIR/FirebaseCrashlytics.framework/upload-symbols"
fi

echo "info: Checking if .plist exists"
if [ -f "$GOOGLE_SERVICE_INFO_PLIST" ]; then
    echo "info: $GOOGLE_SERVICE_INFO_PLIST exists."
else 
    echo "ERROR: $GOOGLE_SERVICE_INFO_PLIST does not exist."
    exit 1
fi

echo "info: Checking if .dSYM"
if [ -d "$DSYM_PATH" ]; then
    echo "info: $DSYM_PATH exists."
else 
    echo "ERROR: $DSYM_PATH does not exist."
    echo "info: try fallback"
    DSYM_PATH=` find "${DWARF_DSYM_FOLDER_PATH}" -name "*.dSYM" | xargs `
    if [ -d "$DSYM_PATH" ]; then
        echo "info: $DSYM_PATH exists."
    else 
        echo "ERROR: $DSYM_PATH does not exist."
        exit 1
    fi
fi
echo "info: Check if upload-symbols script exists"
if [ -f "$CMD" ]; then
    echo "$CMD exists."
else 
    echo "ERROR: $CMD does not exist."
    exit 1
fi

echo "info: Starting command upload-symbols"
"${CMD}" -gsp "$GOOGLE_SERVICE_INFO_PLIST" -p ios "$DSYM_PATH" > /dev/null 2>&1 &
echo "info: Symbol uploading will proceed in the background."
echo "info: remove '> /dev/null 2>&1 &' to test in the main thread and see if there are any errors, or open console and filter with 'upload-symbols'"

© www.soinside.com 2019 - 2024. All rights reserved.