![](/img/trans.png)
[英]Upload dSYM files to Firebase Crashlytics without having GoogleService-Info.plist files
[英]Firebase Crashlytics: Missing dsym files
我们已经从 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 platform {}
但是我的其他问题是:如何找到我的 dsym_directory? 我的意思是每个版本都不同,不是吗? 它还说:
重要提示:如果您正在使用之前从 Fabric 链接到 Firebase Crashlytics 的应用程序,请传入您的 Fabric API 密钥以运行上传符号脚本。 也就是说,在以下运行脚本的选项中,使用 -a fabric-api-key 而不是 -gsp path/to/GoogleService-Info.plist。
那么这是否意味着我可以使用变量 fabric-api-key 或者我需要用我的密钥完全替换它? 有人可以帮助我并给出我必须插入构建阶段的确切行吗?
28/五月/2020 对我来说,我一直在执行这些步骤,直到 dsym 问题与我一起解决。
在第一个将 Firebase Crashlytics 添加到您的应用程序中:
打开您为 Firebase 项目创建的 podfile 并添加 FirebaseCrashlytics pod
pod 'Firebase/Crashlytics'
pod 'Firebase/Analytics'
然后申请:pod install'
创建如图所示的两个脚本:
在第一个脚本中编写下一个命令:
“${PODS_ROOT}/FirebaseCrashlytics/运行”
并在输入文件中添加两个输入文件:
${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:
/ path-to-your-project /Pods/FirebaseCrashlytics/upload-symbols -gsp / path-to-GoogleService-Info.plist /GoogleService-Info.plist -p ios / path-to-appDsyms-folder /appDsyms
对于那些没有在 AppStoreConnect 中找到 Activity 的人。
从 AppStoreConnect 手动下载 .dSYMs 文件:
确保正确上传 dsyn 的替代脚本
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'"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.