1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Xcode Cloud経由でdSYMをFirebase Crashlyticsにアップロードする

Last updated at Posted at 2023-09-08

Xcode14から、Xcode Cloud経由でdSYMがFirebase Crashlyticsにアップロードされない問題を解決する方法となります。

Xcode14 と Bitcode

Xcode14のリリースノートです。

depressions

Starting with Xcode 14, bitcode is no longer required for watchOS and tvOS applications, and the App Store no longer accepts bitcode submissions from Xcode 14.

Xcode no longer builds bitcode by default and generates a warning message if a project explicitly enables bitcode: “Building with bitcode is deprecated. Please update your project and/or target settings to disable bitcode.” The capability to build with bitcode will be removed in a future Xcode release. IPAs that contain bitcode will have the bitcode stripped before being submitted to the App Store. Debug symbols can only be downloaded from App Store Connect / TestFlight for existing bitcode submissions and are no longer available for submissions made with Xcode 14. (86118779)

確かに、App Store Connect にアクセスすると、Xcode13でビルドされたビルドメタデータにはdSYMファイルがあることがわかりましたが、Xcode14でビルドしたものにはビルドメタデータには存在しませんでした。

Xcode13とXcode14 のビルドメタデータ

metadata.png

Xcode CloudへのdSYMアップロードの自動化

DSYMをCrashlytics向けにアップロードするプロセスを自動化するスクリプトを作成するには、このロジックをCIワークフローに組み込む必要があります。

XcodeCloudには、3種類のスクリプトがあり、それぞれ特定の時点で実行されます。カスタムビルドスクリプトの詳細と、それらをワークフローに追加する方法については、ドキュメントで詳しく説明されています。

以下のXcodeBuild後に実行されるスクリプトを使用します。

シェルスクリプト名 トリガー 用途例
ci_post_xcodebuild.sh XcodeBuild後に実行 ビルド成果物を他サービスにアップロード等

以下の3つの環境変数を使用します。

CI_DERIVED_DATA_PATH
  The path to the directory that contains your project’s derived data.

CI_ARCHIVE_PATH
  The path to the exported app archive that Xcode Cloud creates when it runs an archive action.

CI_PRIMARY_REPOSITORY_PATH
  The location of the source code in the temporary build environment cloned from the primary repository specified in the workflow, for example, /Volumes/workspace/repository.

環境変数 用途
CI_DERIVED_DATA_PATH upload-symbolsスクリプトをここから指定します
CI_ARCHIVE_PATH 新しいdSYMファイルを取得する場所です
CI_PRIMARY_REPOSITORY_PATH GoogleService-Info.plistをここから指定します
ci_post_xcodebuild.sh
#!/bin/sh
set -e
if [[ -n $CI_ARCHIVE_PATH ]];
then
    # 親ディレクトリに移動
    cd ..
    # Crashlytics dSYMs スクリプトを実行
    $CI_DERIVED_DATA_PATH/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/upload-symbols -gsp $CI_PRIMARY_REPOSITORY_PATH/プロジェクト名/GoogleService-Info.plist -p ios $CI_ARCHIVE_PATH/dSYMs
else
    echo "アーカイブパスが使用できないため、dSYMアップロードを実行できません"
fi

CI環境変数の確認方法

App Store Connectから環境変数の設定を確認することができます

Set_environment_variables.png

CI_DERIVED_DATA_PATH=/Volumes/workspace/DerivedData
CI_ARCHIVE_PATH=/Volumes/workspace/build.xcarchive
CI_PRIMARY_REPOSITORY_PATH=/Volumes/workspace/repository

重要

ci_post_xcodebuild.shを実行可能に変更します。次のコマンドで実行できます。

chmod +x ci_post_xcodebuild.sh
1
1
1

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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?