目的
弊社のアプリはAppCenterでクラッシュログを収集しています。
アプリのCI/CD環境としてBitriseを使用していますが、Androidのmapping.txtをアップロードするインテグレーションがありません。
仕方がないのでAppCenter CLIであげてしまいましょう!
やり方
まずはAppCenter CLIのドキュメントを漁ってみます!(スタートして長くないサービスなので日本語対応は期待できません。)
https://docs.microsoft.com/ja-jp/appcenter/
クラッシュログのサービス名はDiagnosticsになるので、サイドバーを漁ってみるとそれっぽいのがありますね。
https://docs.microsoft.com/ja-jp/appcenter/diagnostics/android-deobfuscation
Appcenter CLIでできそうなのは分かったので、コマンドの詳細なオプションを調べてみましょう。
ぱっと見る感じだと、必要な情報は全て簡単に取得できそうですね。
$ appcenter crashes upload-mappings -h
Upload the Android mappings for the application
Usage: appcenter crashes upload-mappings [-c|--version-code <arg>] [-n|--version-name <arg>] [-m|--mapping <arg>] [-a|--app <arg>]
Options:
-c|--version-code <arg> The version code to associate with the mappings.
-n|--version-name <arg> The version name to associate with the mappings.
-m|--mapping <arg> Path to an Android mapping.txt file.
-a|--app <arg> Specify app in the <ownerName>/<appName> format
Common Options (works on all commands):
--disable-telemetry Disable telemetry for this command
-v|--version Display appcenter version
--quiet Auto-confirm any prompts without waiting for input
-h|--help Display help for current command
--env <arg> Environment when using API token
--token <arg> API token
--output <arg> Output format: json
--debug Display extra output for debugging
ということで最終的にできたbashはこちらです!
VERSION_CODE=`grep "versionCode" ${APP_GRADLE_PATH} | sed -e 's/[^.0-9]//g'`
VERSION_NAME=`grep "versionName" ${APP_GRADLE_PATH} | sed -e 's/[^.0-9]//g'`
if hash appcenter 2>/dev/null; then
echo "Microsoft AppCenter CLI already installed."
else
echo "Microsoft AppCenter CLI is not installed. Installing..."
npm install -g appcenter-cli
fi
appcenter crashes upload-mappings \
--version-code ${VERSION_CODE} \
--version-name ${VERSION_NAME} \
--mapping ${BITRISE_MAPPING_PATH} \
--app ${APPCENTER_ORG}/${APPCENTER_NAME} \
--token ${APPCENTER_API_TOKEN} \
--quiet
パラメータもこんな感じになっています。簡単ですね!
パラメーター名 | 説明 |
---|---|
APP_GRADLE_PATH | アプリのgradleのパス |
VERSION_CODE | アプリのバージョンコード |
VERSION_NAME | アプリのバージョン名 |
BITRISE_MAPPING_PATH | mapping.txtのパス |
APPCENTER_ORG | AppCenterのURLに含まれる企業名 |
APPCENTER_NAME | AppCenterのURLに含まれるアプリ名 |
APPCENTER_API_TOKEN | AppCenter CLI/APIを叩くためのアクセストークン |