上传符号文件

Zac*_*Zac 12 xcode ios firebase swift firebase-crash-reporting

在我的Firebase崩溃报告页面中,我找不到崩溃的完整信息(例如行数,文件等).我认为这可能是因为它说

上传符号文件以表示UUID的未来堆栈跟踪 - - - - ***

告诉我

使用命令行,导航到Xcode项目文件夹并运行以下命令:./ Pods/FirebaseCrash/batch - upload - - - - ***

不幸的是,当我尝试在我的Xcode项目中执行该命令时,我收到以下消息:

- - - - ***:警告:没有可执行文件或捆绑完成.

并且没有任何火灾变化.也许是因为启用了bitcode?我怎么解决呢?

PS:出于安全原因,我用- - - - ***替换了我的UUID .

Chr*_*way 9

如果你没有使用CocoaPods,这个答案是.

如果您不使用CocoaPods,则需要Pods目录中的一些文件,这些文件未包含在它们提供的标准Firebase库集中.

共有5个文件,如下图所示: FirebaseCrash所需的文件

你需要batch-upload,dump_syms,upload-sym,upload-sym-util.bashupload-sym.sh.您可以从FirebaseCrash Pod文件中检索这些文件.

如果将它们复制到项目目录中并将其替换为"${PODS_ROOT}"/FirebaseCrash/指向这些文件的目录,则应该可以正常工作.

注意:如果我使用像Jenkins这样的构建服务器,我仍然会遇到此解决方案的复杂问题.还有一些工作要做.


我发现这是我不使用CocoaPods的应用程序所必需的.虽然这可能与您自己的使用没有直接关系,但我至少应该将其包含在试图找到答案的其他人中.

  • 不幸的是我正在使用cocoapods,但也许它会对你说的其他人有用!那谢谢啦! (4认同)

小智 8

我们目前在第三方共享库(动态框架)方面存在一些问题,因此如果您使用共享库,则会遇到困难.按照以下说明操作,但将应用程序可执行文件的路径替换为共享库的路径.

如果没有,那么报告崩溃的原始可执行文件可能已丢失.即使使用相同的源重建,LC_UUID字段也会更改.

  1. 验证UUID对于可执行文件是否正确:

    dwarfdump --uuid /path/to/your/build/area/MyApp.app/MyApp

    如果没有UUID与丢失的UUID匹配,则游戏结束.抱歉.你可以尝试从Time Machine,Carbonite或其他任何东西恢复可执行文件,但这就是它.

  2. 如果其中一个UUID匹配(每个架构有一个),那么您仍然拥有原始可执行文件,但您很可能错过了dSYM软件包.您可以验证dSYM丢失:

    mdfind com_apple_xcode_dsym_uuids=UUID

    你应该看不到任何回应.

  3. 重新生成dSYM包:

    dsymutil -o=upload.dSYM /path/to/your/build/area/MyApp.app/MyApp
  4. 检查dSYM捆绑包是否已注册:

    mdfind com_apple_xcode_dsym_uuids=UUID

    你应该得到一个回复​​:upload.dSYM你刚刚创建的.

    如果你没有看到它,请给它几秒钟再试一次.

  5. 再跑一次.batch-upload UUID

  6. 如果它仍然不起作用,您可以通过处理可执行文件本身获得部分结果.运行以获得部分符号.batch-upload /path/to/your/build/area/MyApp.app/MyApp