LoginSignup
6
4

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-02-20

メモ書き

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

コンソールからの 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の場所}

以上。

6
4
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
6
4