Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What is going on with this article?
@dolfalf

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

More than 1 year has passed since last update.

メモ書き

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

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

以上。

4
Help us understand the problem. What is going on with this article?
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
dolfalf
iOSプログラマー/フリーランス、主にSwiftを書いています。今年からAndroidも始めました。
archive-asia
外国籍ITエンジニアの人材サービスおよびソフトウェア開発。日本語の壁を越え、高い技術力とグローバル感覚を併せ持ったITエンジニアが多数活躍できる環境を創出することに取組んでいます。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
4
Help us understand the problem. What is going on with this article?