2
0

More than 1 year has passed since last update.

Firebase Crashlytics の upload-symbols コマンドを直接入手する

Posted at

経緯

Bitcode が有効化されたアプリで、 dSYM ファイルを AppStoreConnect からダウンロード。
fastlane の upload_symbols_to_crashlytics アクションでこれをアップロードする CI / CD のステップを組んでいました。

Firebase Crashlytics には dSYM ファイルをアップロードするためのコマンドとして upload-symbols が同梱 されており、upload_symbols_to_crashlytics アクションでは、この upload-symbols を利用して dSYM ファイルのアップロードを実施しています。

Firebase Crashlytics を CocoaPods で導入していた場合は問題ないのですが、 SwiftPackageManager で導入した場合、配置先のパスが特定できずにうまく動いてくれなかったため、 upload-symbols コマンドを別途用意する対応を実施しました。

対応方法

前述の通り、 upload-symbols コマンドについては Firebase Crashlytics のパッケージに同梱されているため、 curl でホスティング先の GitHub から直接ダウンロードしてしまいます。

# Firebase バージョンを別途指定する必要がある
$ curl -fsSL https://github.com/firebase/firebase-ios-sdk/raw/9.0.0/Crashlytics/upload-symbols -o ${配置先パス}/upload_symbols
# 一応、実行権限を付与
$ chmod +x ${配置先パス}/upload-symbols

あとはこれを upload_symbols_to_crashlytics アクションで利用するだけです。
パラメータとして binary_path を指定可能なため、これを指定することになります。
image.png

Fastfile の記述としてまとめると以下のようになります。

# 一時ディレクトリに配置
binary_path = ENV["TMPDIR"] + "/upload-symbols"

# upload-symbols を直接ダウンロード
sh(
  "curl",
  "-fsSL",
  "https://github.com/firebase/firebase-ios-sdk/raw/9.0.0/Crashlytics/upload-symbols",
  "-o",
  binary_path
)
sh("chmod", "+x", binary_path)

# 直接ダウンロードした upload-symbols を利用して upload_symbols_to_crashlytics 実行
upload_symbols_to_crashlytics(
  dsym_path: "${アップロードする dSYM のパス}",
  gsp_path: "${GoogleService-Info.plist のパス}",
  binary_path: binary_path
)

備考

fastlnae 側にも該当 issue が立っているのですが、コメント欄にある通り Xcode 14 以降ではそもそも AppStoreConnect からの dSYM ファイルダウンロードが不要になるはずなので、時間が解決してくれそうです。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0