Help us understand the problem. What is going on with this article?

XCodeのRun ScriptでFirebaseにシンボルをアップロードした件

メモ書き

ネットで色々調べればすぐ分かる内容ですが、情報がたくさんありすぎて苦労したのでメモとしてまとめました。

コンソールからの dSYM のアップロードは 2020 年 3 月 1 日をもってサポート終了となります。このアップロード処理はアップローダー スクリプトに置き換わります。上記のアップロード スクリプトを使用できます。

上記のようにFirebaseで案内していますが、コンソールからアップロードは廃止される予定です。

まず、Firebaseドキュメントを参考にXCodeのRunScriptに追加したらOKらしい。

"${PODS_ROOT}/Fabric/upload-symbols" -gsp "${PROJECT_DIR}/GoogleService-Info.plist" -p ios "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"

早速、RunScriptを作ったのはこんな感じです。

まず、RunScriptの環境変数を調べる

とりあえずこれを叩くと全てのパスが確認できる

xcodebuild -showBuildSettings

または、

$ xcodebuild -showBuildSettings | grep "XXX"

環境ことにGoogleService-Infoを置き換える

ビルド環境が分けてあって複数のGoogleService-Infoを使っている場合は下記のように置き換える必要があります。

#[CP]GoogleService-Info.json
# Replace GoogleService-Info.json file by environment
if [ "${CONFIGURATION}" = "Debug" ]; then
    cp "${PROJECT_DIR}/${PROJECT_NAME}/GoogleService-Info-Debug.plist" "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/GoogleService-Info.plist"
    echo "Debug(Develop) GoogleService-Info copied."
elif [ "${CONFIGURATION}" = "Staging" ]; then
   cp "${PROJECT_DIR}/${PROJECT_NAME}/GoogleService-Info-Staging.plist" "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/GoogleService-Info.plist"
    echo "Staging(Staging) GoogleService-Info copied."
elif [ "${CONFIGURATION}" = "Release" ]; then
    cp "${PROJECT_DIR}/${PROJECT_NAME}/GoogleService-Info.plist" "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/GoogleService-Info.plist"
    echo "Production(Release) GoogleService-Info copied."
fi

シンボルをアップロードする

上記のように環境が分けてあるのでアップロードも分けて処理するようにしておく。

#upload symbols
if [ "${CONFIGURATION}" = "Debug" ]; then
    "${PODS_ROOT}/Fabric/upload-symbols" -gsp "${PROJECT_DIR}/GoogleService-Info-Debug.plist" -p ios "${DWARF_DSYM_FOLDER_PATH}"
    echo "Debug(DEV) uploaded symbols."
elif [ "${CONFIGURATION}" = "Staging" ]; then
   "${PODS_ROOT}/Fabric/upload-symbols" -gsp "${PROJECT_DIR}/GoogleService-Info-Staging.plist" -p ios "${DWARF_DSYM_FOLDER_PATH}"
    echo "Staging(Staging) uploaded symbols."
elif [ "${CONFIGURATION}" = "Release" ]; then
    "${PODS_ROOT}/Fabric/upload-symbols" -gsp "${PROJECT_DIR}/GoogleService-Info.plist" -p ios "${DWARF_DSYM_FOLDER_PATH}"
    echo "Production(Release) uploaded symbols."
fi

Fabric initialize

これなんのためなのか分からないが、Firebaseドキュメントに書いてあったので最後に追加しました。

#Fabric Initialize
"${PODS_ROOT}/Fabric/run"

ダメだった。

Archiveする際にアップロードはできているが(ログ上の確認)なぜか、Firebase上ではアップロードされませんでした。
誰かご存知の方、教えてください。
結局、ArchivingしたファイルからdSYMsをコピーしてターミナルでアップロードしました。
(これで一応SymbolはアップロードできてFirebase上でもアップロード表示に変わります。)

ターミナルコマンド

{プロジェクトのパス}/Fabric/upload-symbols -gsp {プロジェクトのパス}/GoogleService-Info.plist -p ios {dSYMsの場所}

以上。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした