我在我的应用程序中使用了Crashlytics,一切正常。甚至Crashlytics也运作良好。
但是问题是,每当我为我们的应用创建新建版本 再次显示丢失的新DSYM文件。
对此有什么解决办法吗?
在fabric文档中,我发现了这一点。但是我不明白。
有人可以向我解释如何解决此问题吗?
https://docs.fabric.io/apple/crashlytics/advanced-setup.html
答案 0 :(得分:13)
我们最近遇到了同样的问题。最终获得了一些自定义版本的上传脚本。
if [[ "${CONFIGURATION}" = "Release" ]] || [[ "${CONFIGURATION}" = "Adhoc" ]]; then
echo "Uploading dSYMs.."
find "${DWARF_DSYM_FOLDER_PATH}" -name "*.dSYM" | xargs -I \{\} "${PODS_ROOT}/FirebaseCrashlytics/upload-symbols" -gsp "${SRCROOT}/GoogleService-Info.plist" -p ios \{\}
else
echo "Skip dSYMs upload"
fi
请注意在调试配置中带引号的路径和跳过的dSYM上传。尽管这在大多数情况下可能无关紧要,但是无论如何在Debug配置中关闭了dSYMS。
这里find
的目的还在于帮助上传动态框架的dSYM文件。例如。 OS第三方库,项目框架等。否则,将不会对其进行符号化。尽管仍然显示在堆栈跟踪中。
答案 1 :(得分:3)
此错误意味着某些dSYM文件丢失。推荐的方法是将dSYM文件不断上传到Crashlytics。
现在 Crashlytics 已集成在 Firebase 中,文档略有更改:https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports-new-sdk
pod 'Firebase/Crashlytics'
find "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}" -name "*.dSYM" | xargs -I \{\} $PODS_ROOT/FirebaseCrashlytics/upload-symbols -gsp ${SRCROOT}/GoogleService-Info.plist -p ios \{\}
如果您不想每次调试构建应用程序时都上传dSYM文件:https://support.crashlytics.com/knowledgebase/articles/118559-can-i-make-the-dsym-uploading-only-on-release-buil
答案 2 :(得分:2)
每次添加一行代码后重新编译项目时,dSYM都会更改,因为生成的二进制文件中的代码行地址不同。
您可以查看Fabric docs about uploading dsym通过添加一个构建阶段来自动上载dSYM,或者使用Fabric窗格而不是仅使用Crashlytics(显然会自动添加一个构建阶段,如@ekscrypto所说的那样)。
如果您仍然希望手动执行此操作,请打开xcarchive,在其中可以找到dSYM,并将其上传到crashlytics
dSYM是调试SYMbol的缩写。这可以帮助crashlytics解决收到的崩溃日志,并帮助显示有关可能发生的崩溃/错误的详细信息。
存档应用程序时,剩下的* .xcarchive“文件”实际上是一个可以浏览的文件夹。在此xcarchive中,您应该在dSYM所在的位置有一个dSYM文件夹。
要查看它,请先在XCode中打开管理器窗口(“窗口”>“管理器”或cmd + shift + 6),右键单击最后一个存档,然后单击“在Finder中显示”。在打开的“查找器”窗口中,右键单击您的应用程序的最后一个xcarchive,然后单击显示内容(抱歉,图片为法语)
这会将您带到xcarchive中,您可以在其中查看应用程序的dSYM
将其上传到crashlytics应该可以解决您的问题
答案 3 :(得分:2)
遵循简单步骤 1转到存档,然后右键单击要在Firebase上获取崩溃报告的最新版本 2参见dsyms文件夹 3创建dsyms文件夹的Zip文件 4最终将该zip文件上传到Firebase控制台
答案 4 :(得分:2)
然后他们又改变了:
find dSYM_directory -name "*.dSYM" | xargs -I \{\} $PODS_ROOT/FirebaseCrashlytics/upload-symbols -gsp ${SRCROOT}/GoogleService-Info.plist -p ios \{\}
在这里检查: https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports-new-sdk
答案 5 :(得分:0)
确保您集成了新的“ Fabric”框架,而不仅仅是Crashlytics框架。当您这样做时,您将在项目的构建阶段中得到一个新脚本。
此脚本将自动找到dSYM,并将其与您的构建一起上载到Fabric.io/Crashlytics系统。
答案 6 :(得分:0)