如何上传使用 Flutter 开发的 dsyms 文件?

Posted

技术标签:

【中文标题】如何上传使用 Flutter 开发的 dsyms 文件?【英文标题】:How to upload dsyms files which developed with Flutter? 【发布时间】:2019-09-06 15:51:37 【问题描述】:

我正在开发一款支持 Flutter 的跨平台应用。我为崩溃报告集成了 firebase Crashlytics。在我需要检查报告之前出现一条错误消息

Upload 1 missing dSYM required to process 4 crashes

为此,我尝试了 firebase 文档

Get deobfuscated crash reports

另外,我按照步骤使用颤振构建 ios 存档

Preparing an iOS App for Release

不过,firebase 门户上也存在同样的问题

Upload 1 missing dSYM required to process 4 crashes

我尝试了很多次,但仍然没有完成。

如果有人有想法,请帮我解决这个问题。

感谢社区

【问题讨论】:

您应该在ios 目录中找到the Runner.app.dSYM.zip。它由 flutter build ios 命令生成,用于发布版本,假设 Crashlytics 设置正确。 我也试过了,但没有完成。 你是如何生成发布包的? using 在命令行中,在您的应用程序目录中按照以下步骤操作: 运行 flutter build ios 以创建发布版本(flutter build 默认为 --release)。要确保 Xcode 刷新发布模式配置,请关闭并重新打开 Xcode 工作区。对于 Xcode 8.3 及更高版本,此步骤不是必需的。 【参考方案1】:

让您的 Xcode 在您运行/构建应用时自动上传它。

我。打开 Xcode > 目标 > MyProjectName > 构建阶段

添加由每个脚本组成的两个脚本(使用 + 号)

    "$PODS_ROOT/FirebaseCrashlytics/run"

    "$PODS_ROOT/FirebaseCrashlytics/upload-symbols" -gsp "$PROJECT_DIR/MyProjectName/GoogleService-Info.plist" -p ios "$DWARF_DSYM_FOLDER_PATH/$DWARF_DSYM_FILE_NAME"

重要提示:确保将 MyProjectName 替换为您的项目名称,但保持原样。

二。还要确保在 Targets > MyProjectName > Build settings 中检查这些选项

调试信息格式设置为DWARF with dSYM file

三。视觉效果

【讨论】:

我做了与你完全相同的配置,但我仍然在 firebase 控制台中收到警告...知道可能出什么问题吗? 注意:这是"$PROJECT_DIR/Runner/GoogleService-Info.plist" 而不是"$PROJECT_DIR/MyProjectName/GoogleService-Info.plist"(你的截图很好) @Milvintsiss 屏幕截图是项目名称“Runner”的示例,以便使其相关。 哦,我正在学习一些东西,我从来没有在没有 Flutter 的情况下做过 iOS 项目,所以我认为“Runner”就像 android 中的“app”文件夹,它不能有其他名称 ^^ 这不再有效,因为您使用 flutterfire CLI 初始化了 firebase。由于不再使用GoogleService-Info.plist,因此我尝试将-gsp "[Path to file]"-ai "[App ID]" 进行交换。但我仍然收到以下错误:error: Could not get GOOGLE_APP_ID in Google Services file from build environment。有谁知道我该如何解决这个问题?【参考方案2】:

在准备发布我的应用时,我会采取以下步骤来导出、上传和获取 dSYM:

    在终端中我运行“flutter build ios --release” 在 xCode 中打开 iOS 项目并将设备切换到“通用 iOS 设备” 从顶部菜单产品>存档 完成后,管理器窗口将显示您存档的构建。您也可以从 Window>Organizer 手动打开此窗口 选择您要上传到 iTunes Connect 的构建并点击分发应用程序并按照流程进行操作 上传完成后,右键单击管理器窗口中的构建,然后单击“在 Finder 中显示” 您应该会在 finder 中看到一个存档文件,右键单击它并单击“显示包内容”。 里面应该有一个名为 dSYM 的文件夹,您可以将其压缩并发送到任何您需要的地方

【讨论】:

【参考方案3】:

您也可以使用Fastlane 将其作为发布过程的一部分自动执行。 这是一个可以进入你的Fastfile的例子

platform :ios do
  desc "Upload symbols to Crashlytics"
  lane :toCrashlytics do
    upload_symbols_to_crashlytics
  end
end

然后你可以运行fastlane ios toCrashlytics 来运行它。

请参阅this link 了解更多详情。

【讨论】:

最好的办法!快车道摇滚。【参考方案4】:

在构建 Flutter 应用的存档后(使用 Xcode),您可以从 Flutter 应用的 ios 目录(使用 Firebase 的上传工具)运行以下命令:

Pods/FirebaseCrashlytics/upload-symbols -gsp /path/to/GoogleService-Info.plist -p ios build/Runner.xcarchive/dSYMs

更改上述命令行以指向正确的 Firebase plist 文件。 -p 标志指定平台(可以是iosmactvos)。上述命令还会查找 App 的存档文件Runner.xcarchive

【讨论】:

以上是关于如何上传使用 Flutter 开发的 dsyms 文件?的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 使用“上传脚本”在版本 3.14.0 的 Crashlytics 中上传 Dsym 文件

必须上传一个 dSYM 文件始终显示在 Firebase Crashlytics 中

上传到 App Center 后缺少 dSYM

使用上传符号将 dSYM 上传到 Firebase

上传 DSYMS 文件失败。我已经上传了 myapp.app.dSYM 压缩文件,但它再次要求我上传“上传缺少所需的 dSYM”

Firebase crashlytics 自动上传 dsym