Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 作为Xcode构建过程的一部分,如何运行上载符号来上载DSYM?_Ios_Swift_Xcode_Crashlytics_Dsym - Fatal编程技术网

Ios 作为Xcode构建过程的一部分,如何运行上载符号来上载DSYM?

Ios 作为Xcode构建过程的一部分,如何运行上载符号来上载DSYM?,ios,swift,xcode,crashlytics,dsym,Ios,Swift,Xcode,Crashlytics,Dsym,好的,我正在尝试自动上传dSYMs。 我遵循本官方文件的指示: 我被困在“手动运行上传符号脚本”部分。 有3种方法可以上传dSYMs。我正试图遵循第一条——在构建过程中包括以下几行: find${DWARF\u DSYM\u FOLDER\u PATH}-name“*.DSYM”| xargs-I\{}${PODS\u ROOT}/Fabric/upload symbols-gsp MyProjectFolder/GoogleService-Info.plist-p ios\{} 目前,我尝试

好的,我正在尝试自动上传dSYMs。 我遵循本官方文件的指示:

我被困在“手动运行上传符号脚本”部分。 有3种方法可以上传dSYMs。我正试图遵循第一条——在构建过程中包括以下几行:
find${DWARF\u DSYM\u FOLDER\u PATH}-name“*.DSYM”| xargs-I\{}${PODS\u ROOT}/Fabric/upload symbols-gsp MyProjectFolder/GoogleService-Info.plist-p ios\{}

目前,我尝试了以下方法:

  • 我进入项目->方案->编辑方案
  • 我点击Build->Post actions
  • 我从小处开始-我只想在构建过程中显示“echo”:
  • 我运行产品->构建
  • 我进入查看->导航器->显示报告导航器
  • 没有迹象表明echo在运行
  • 这个脚本放在哪里


    如何找到它是否正在运行?

    您需要在项目目标->构建设置->调试信息(调试和发布两者)->DWARF with dSYM文件中请求更新


    尝试以下步骤:

    步骤1:选择应用程序的Xcode项目,然后选择应用程序目标,然后选择“构建阶段”

    步骤2:在Xcode菜单中,选择“编辑器”,然后选择“添加构建阶段”,然后单击“添加运行脚本构建阶段”

    步骤3:您现在应该在构建阶段选项中看到一个运行脚本部分

    步骤4:将脚本粘贴到运行脚本构建阶段的主体中

    请记住在脚本中设置正确的文件路径。

    TL;DR:在构建时生成的dSYMS在“启用位码”时代没有什么价值,您需要从苹果下载dSYMS,并在苹果处理您的上传后将其上传到您的第三方crash reporter服务,作为构建后的一个步骤

    背景 症状 第三方崩溃报告控制台中缺少dSYMs/失败符号。我认为尽管遵循Crashlytics安装说明,脚本还是失败了

    比特码——根本问题 事实证明,第三方崩溃报告系统(如Crashlytics或New Relic)在当前应用程序分发的最佳实践中存在一个根本问题,即启用位码的应用程序。从历史上看,这些第三方崩溃报告系统依靠构建时步骤上传构建时生成的DSYM。但由于启用位码意味着应用商店会重新编译您的应用程序,因此您试图上传的构建时生成的dsym实际上是无用的

    作为背景,支持位码的应用程序被“精简”,因此由苹果重新编译,这样每个设备只获得它所需的下载位。您希望启用位代码。这是一件好事。但是,启用位码的分发会弄乱符号。无论您在构建时生成何种DSYM,DSYM实际上都不会与App Store或TestFlight安装的构建中的崩溃相关联,因为您的崩溃将来自App Store重新编译版本的应用程序以及新的相应DSYM

    因此,不要担心上传脚本在构建时是否工作。事实上,这个步骤可以从构建过程中删除,因为它只是在浪费您的时间和带宽

    唯一有用的情况是,如果您想从本地安装的版本中象征崩溃,而不是直接在Xcode中调试它们

    解决 解决方案是在上传你的应用程序后等待“一段时间”(据我的经验,通过NewRelic文档,在我上传fastlane后,睡眠时间为120秒,但在我运行fastlane的下载之前,Syms操作有时会失败,300秒的睡眠时间是可靠的)(可能是应用商店说您的构建正在“处理”的时间),然后从那里下载dSYMs并使用第三方crash reporters命令行上载脚本

    手动下载/上传 第三方crash reporters(至少包括NewRelic和Crashlytics文档)目前推荐的解决方案是,进入App Store Connect页面进行构建并下载dSYMs,然后上传,或者使用XCode的归档管理器点击“下载调试符号”按钮,然后上传

    这确实有效,如果手动下载dSYM并将其推送到崩溃报告供应商,您将获得符号化的报告。这是一个手动过程,尽管使用Xcode GUI或App Store Connect界面

    快车道自动化 不过,您可以使用Fastlane实现流程自动化,我认为这是正确的解决方案


    这是我链接的文档指南页面上的内容。这对我不起作用,这就是为什么我要尝试下一步工作——用脚本上传dSYMs。你希望我在答案底部链接的fastlane操作。它们对我很有用——我在构建后下载/上传“最新”的dSYMs,这有时很有效(这是一个计时问题),我有一条专门为“最新”的DSYM设计的通道,可以按需运行(以防在构建过程中出现苹果尚未完成处理的计时问题),我有一个完整的刷新\u dsyms lane-所有这些都是在这些链接操作上用一行程序构建的。确实节省了大量时间。我在TLDR和简介中提到这是一个最佳实践(因为它是)这意味着它只适用于此。我甚至解释了它的含义,我认为这清楚了吗?没问题,它只是作为符号向我读出,不上传,因为只有位代码。感谢这个伟大的答案!我有一个关于“等待一段时间”的问题部分。我使用fastlanes下载带有wait_for_dsym_处理标志的dsyms,甚至将等待时间设置为10分钟,但总是会得到错误
    ITC.response.error.BUILD\u NOT_FOUND
    错误访问dsym文件进行构建
    。我想这是因为构建仍在处理,对吗?所以我考虑运行e dsym每天刷新一次,因为我不想让CI