我想从具有多种 flavors 的 Flutter 应用程序上传 dsym 符号。每个 GoogleService-Info 都位于 config/flavor_name 文件夹中。我应该将什么脚本添加到“构建阶段”以将 dsym 上传到 Firebase Crashlytics?
从另一个线程尝试脚本,但它似乎不起作用
我找到了一个剧本
environment="default"
if [[ $CONFIGURATION =~ -([^-]*)$ ]]; then
environment=${BASH_REMATCH[1]}
fi
GOOGLESERVICE_INFO_PLIST=GoogleService-Info.plist
GOOGLESERVICE_INFO_FILE=${PROJECT_DIR}/config/${environment}/${GOOGLESERVICE_INFO_PLIST}
if [ ! -f $GOOGLESERVICE_INFO_FILE ]
then
echo "No GoogleService-Info.plist found. Please ensure it's in the proper directory."
exit 1
fi
google_app_id=$(cat $GOOGLESERVICE_INFO_FILE | grep -oEi '\d:\d*?:ios:[[:alnum:]]*')
echo $google_app_id
$PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase --validate -ai $google_app_id
$PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase -ai $google_app_id
这是一个更好的脚本。它不使用 cat 和 grep,而是使用内置的 Mac 工具 PlistBuddy。另外,不要忘记第 5 步。从这里开始:https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports?platform=flutter
environment="default"
# Get environment name
if [[ $CONFIGURATION =~ -([^-]*)$ ]]; then
environment=${BASH_REMATCH[1]}
fi
echo $environment
# Name and path of the resource we're reading
GOOGLESERVICE_INFO_PLIST=GoogleService-Info.plist
GOOGLESERVICE_INFO_FILE=${PROJECT_DIR}/config/${environment}/${GOOGLESERVICE_INFO_PLIST}
# Make sure GoogleService-Info.plist exists
if [ ! -f $GOOGLESERVICE_INFO_FILE ]
then
echo "No GoogleService-Info.plist found. Please ensure it's in the proper directory."
exit 1
fi
# Get app id
APP_ID=$(/usr/libexec/PlistBuddy -c "Print :GOOGLE_APP_ID" "${GOOGLESERVICE_INFO_FILE}")
echo $APP_ID
$PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase --validate -ai ${APP_ID}
$PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase -ai ${APP_ID}