在我的Firebase崩溃报告页面中,我找不到崩溃的完整信息(例如行数,文件等)。 我认为可能是因为它说
告诉我上传符号文件以表示UUID的未来堆栈跟踪 的 - - - - ***
使用命令行导航到Xcode项目文件夹并运行 以下内容:./Pods / FirebaseCrash/batch-upload - - - - ***
不幸的是,当我尝试在我的Xcode项目中执行该命令时,我收到以下消息:
- - - - ***:警告:没有可执行文件或捆绑包 完成。
并且firebase没有任何变化。也许是因为启用了bitcode?我该如何解决?
P.S。 :出于安全考虑,我已用 - - - - ***替换了我的UUID。
答案 0 :(得分:9)
如果你没有使用CocoaPods,那么这个答案是
如果您不使用CocoaPods,则需要Pods目录中的一些文件,这些文件未包含在它们提供的标准Firebase库集中。
您需要batch-upload
,dump_syms
,upload-sym
,upload-sym-util.bash
和upload-sym.sh
。您可以从FirebaseCrash Pod文件中检索这些文件。
如果将它们复制到项目目录中并将"${PODS_ROOT}"/FirebaseCrash/
替换为指向这些文件的目录,它应该可以正常工作。
注意:如果我使用像Jenkins这样的构建服务器,我仍然会遇到此解决方案的复杂问题。还有一些工作要做。
我发现这是我不使用CocoaPods的应用程序所必需的。虽然这可能与您自己的使用没有直接关系,但至少我应该将其包含在试图找到答案的其他人中。
答案 1 :(得分:8)
我们目前在第三方共享库(动态框架)方面存在一些问题,因此如果您使用的是共享库,则会遇到困难。按照以下说明操作,但将应用程序可执行文件的路径替换为共享库的路径。
如果没有,那么报告崩溃的原始可执行文件可能已丢失。即使使用相同的源重建,LC_UUID字段也会改变。
验证UUID对于可执行文件是否正确:
dwarfdump --uuid /path/to/your/build/area/MyApp.app/MyApp
如果没有UUID与丢失的UUID匹配,则游戏结束。抱歉。您可以尝试从Time Machine,Carbonite或其他任何方式恢复可执行文件,但这是关于它的。
如果其中一个UUID匹配(每个架构有一个),那么您仍然拥有原始可执行文件,但您很可能错过了dSYM软件包。您可以验证缺少dSYM:
mdfind com_apple_xcode_dsym_uuids=UUID
你应该看不到回应。
重新生成dSYM包:
dsymutil -o=upload.dSYM /path/to/your/build/area/MyApp.app/MyApp
检查dSYM捆绑包是否已注册:
mdfind com_apple_xcode_dsym_uuids=UUID
您应该收到一条回复:您刚刚创建的 upload.dSYM
。
如果您没有看到它,请给它几秒钟再试一次。
再次运行batch-upload UUID
。
如果它仍然无效,您可以通过处理可执行文件本身获得部分结果。运行batch-upload /path/to/your/build/area/MyApp.app/MyApp
以获得部分符号。
答案 2 :(得分:1)
在我的情况下(没有COCOAPODS ):
1)从目录“Crash”中导入所有文件
2)将脚本添加到“Build Phases”选项卡中,如下所示:
# Replace this with the GOOGLE_APP_ID from your GoogleService-Info.plist file
GOOGLE_APP_ID=1:xxxxxxxxxxxx:ios:xxxxxxxxxxxx
# Replace the /Path/To/ServiceAccount.json with the path to the key you just downloaded
"${SRCROOT}"/upload-sym "${SRCROOT}/*NameOfTargetDirectory*/ServiceAccount.json"
您需要在脚本中更改“ NameOfTargetDirectory ”,它才有效!