通过 Fastlane 将 dSYMS 上传到 Firebase

dar*_*234 12 continuous-integration firebase fastlane

我正在努力通过 Fastlane 将 dSYM 文件上传到 Firebase。我有一条如下所示的车道:

desc "Fetch and upload dSYM files to Firebase Crashlytics"
lane :refresh_dsyms_firebase do |options|
  download_dsyms(version: options[:version])        
  upload_symbols_to_crashlytics(gsp_path: "./App/GoogleService-Info.plist") 
  clean_build_artifacts
end
Run Code Online (Sandbox Code Playgroud)

我确认这是plist文件的正确路径,但是当我首先尝试运行车道时,我看到以下内容:

[17:22:47]: invalid byte sequence in UTF-8
[17:22:47]: invalid byte sequence in UTF-8
[17:22:47]: invalid byte sequence in UTF-8
Run Code Online (Sandbox Code Playgroud)

然后为找到的每个 dSYM 文件找到其中一个:

[17:22:48]: Uploading '70DBE65E-227E-3754-89F2-EEFA6B8EEC2F.dSYM'...
[17:22:48]: Shell command exited with exit status  instead of 0.
Run Code Online (Sandbox Code Playgroud)

我试图确定我在这个过程中缺少什么。有没有人有想法?我对 Fastlane 相当陌生,所以肯定假设我可能会遗漏一些基本的东西。(虽然,那个空的退出状态有点奇怪)。

快车道 2.107.0

编辑(2021 年 6 月 7 日:2021 年):我将我自己的答案更新为在撰写本文时对我有帮助的答案。

此页面上还有许多其他关于使用 Fastlane 的很棒的答案 - 请查看它们

Rya*_*huk 10

这可能不是大多数人的选择,但我最终通过重新开始解决了这个问题。如果你是从 Fabric 过来的,这可能不是很明显,但我想我会撕掉创可贴。我最初的设置是使用 Fabric(Answers)/Firebase Crashlytics,它是 Fabric->Firebase 迁移路径,虽然很微妙,但两者之间的配置略有不同,并导致出现问题upload_symbols_to_crashlytics

  1. 删除对 Fabric 答案的支持,或替换为https://firebase.google.com/docs/analytics/ios/start
  2. 删除Fabric声明Info.plist
  3. 在 BuildPhases 中修改现有的运行脚本:将现有的运行脚本替换为输入文件"${PODS_ROOT}/Fabric/run"并将其添加$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)到输入文件中
  4. 在您AppDelegate删除时Fabric.with([Crashlytics.self]),您也可以杀死它,import Fabric因为 Firebase 现在已经涵盖了
  5. 取消链接结构,重新载入 Firebase crashlytics,然后选择新的集成。
desc "Upload any dsyms in the current directory to crashlytics"
lane :upload_dsyms do |options|
  download_dsyms(version: version_number, build_number: build_number)
  upload_symbols_to_crashlytics(gsp_path: "./App/Resources/GoogleService-Info.plist")
  clean_build_artifacts
end
Run Code Online (Sandbox Code Playgroud)


dar*_*234 9

对此感兴趣的任何人都可以关注这里的线程:https : //github.com/fastlane/fastlane/issues/13096

TL;DR:当你打电话时

upload_symbols_to_crashlytics(gsp_path: "./App/GoogleService-Info.plist")

它将从已安装的 Fabric pod 中调用二进制文件,upload_symbols如下所示:

./Pods/Fabric/upload-symbols -a db4d085462b3cd8e3ac3b50f118e273f077497b0 -gsp ./App/GoogleService-Info.plist -p ios /private/var/folders/x1/x6nqt4997t38zr9x7zwz72kh0000gn/T/d30181115-8238-1fr38bo/D4CE43B9-9350-3FEE-9E71-9E31T39080CD.dSYM

您会注意到它使用 Fabric API 密钥和 GoogleService-Info.plist 路径调用它。我不知道为什么,但这会导致它无法上传。Info.plist在运行 fastlane 通道之前,您必须暂时从文件中删除结构配置信息。(记得重新添加fabric配置)。


Abd*_*med 5

首先,您需要使用,upload_symbols_to_crashlytics但在使用它之前,您需要从 App Store Connect 下载您的 dsym,为此,您应该使用download_dsyms一些参数version,并且build_numberFastlane 会询问您的信息app_identifier,所以我建议您不要使用它中断构建直到得到答案。

desc "Upload any dsyms in the current directory to Crashlytics of firebase"
lane :upload_dsyms do |options|

  version_number = get_version_number(target: "your_app_target")
  build_number = get_build_number
  download_dsyms(
    app_identifier: "your_app_identifier",
    version: version_number,
    build_number: build_number
  )
  upload_symbols_to_crashlytics(gsp_path: "./your_app_name or your_app_target/another_directroy/GoogleService-Info.plist")
  clean_build_artifacts
end
Run Code Online (Sandbox Code Playgroud)

我的应用程序是

desc "Upload any dsyms in the current directory to Crashlytics of firebase"
lane :upload_dsyms do |options|

  version_number = get_version_number(target: "Movies")
  build_number = get_build_number
  download_dsyms(
    app_identifier: "com.vngrs.Movies.demo",
    version: version_number,
    build_number: build_number
  )
  upload_symbols_to_crashlytics(gsp_path: "./Movies/Resources/GoogleService-Info.plist")
  clean_build_artifacts
end
Run Code Online (Sandbox Code Playgroud)