ios 如何上传用Flutter开发的dsyms文件?

ghg1uchk  于 5个月前  发布在  iOS
关注(0)|答案(7)|浏览(65)

我正在开发一个跨平台的应用程序与Flutter的支持。我集成的firebase Crashlytics崩溃报告。之前,我需要检查报告一个错误消息来
第一个月
为此,我尝试了Firebase Docs
Get deobfuscated crash reports
此外,我还遵循了使用flutter构建iOS Archive的步骤
Preparing an iOS App for Release
不过,在Firebase Portal上也有同样的问题。
Upload 1 missing dSYM required to process 4 crashes
我试了很多次,但还没有完成。
如果有人有想法,请帮助我解决这个问题。
谢谢,社区

suzh9iv8

suzh9iv81#

让你的Xcode在你运行/构建应用时自动上传。

I.打开Xcode > Targets > MyProjectName > Build phages
添加两个脚本(使用+符号),每个脚本由以下内容组成
1.第一个月

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

重要提示:请确保将MyProjectName替换为您的项目名称,但保留其余部分。

II.还请确保在目标> MyProjectName >构建设置中选中这些选项
安装信息格式设置为DWARF with dSYM file
三.图像x1c 0d1xx 1c 1d 1xx 1c 2d 1xx 1c 3d 1x

ugmeyewa

ugmeyewa2#

当准备发布我的应用程序时,我采取以下步骤导出,上传和获取dSYM:
1.在终端我运行'Flutter建立ios --释放'
1.在xCode中打开iOS项目,并将设备切换到“Generic iOS Device”
1.从顶部菜单产品>存档
1.一旦完成,管理器窗口将显示您的存档构建。您也可以从窗口>管理器手动打开此窗口
1.选择您要上传到iTunes Connect的版本,然后点击分发应用程序并按照流程操作
1.上传完成后,右键单击组织器窗口中的构建,然后单击“在查找器中显示”
1.您应该在finder中看到一个存档文件,右键单击它并单击“显示包内容”。
1.里面应该有一个名为dSYM的文件夹,您可以压缩并发送到任何您需要的地方

xam8gpfp

xam8gpfp3#

你可以使用Fastlane来自动化这个作为发布过程的一部分.这里有一个例子可以进入你的Fastfile

platform :ios do
  desc "Upload symbols to Crashlytics"
  lane :toCrashlytics do
    upload_symbols_to_crashlytics
  end
end

字符串
然后你可以运行fastlane ios toCrashlytics来运行它。
请参阅this link了解更多详细信息。

35g0bw71

35g0bw714#

在构建Flutter应用的Archive(使用Xcode)之后,您可以从Flutter应用的ios目录(使用Firebase的上传工具)运行以下命令:

Pods/FirebaseCrashlytics/upload-symbols -gsp /path/to/GoogleService-Info.plist -p ios build/Runner.xcarchive/dSYMs

字符串
更改上述命令行以指向正确的Firebase plist文件。-p标志指定平台(可以是iosmactvos)。上述命令还将查找应用程序的存档文件Runner.xcarchive

qvtsj1bj

qvtsj1bj5#

方案1

我使用这个运行脚本来自动化这个过程

if [ "${CONFIGURATION}" = "Release" ]; then
    GOOGLESERVICE_INFO_PLIST=GoogleService-Info.plist
    GOOGLESERVICE_INFO_FILE="/path/to/GoogleService-Info.plist"
    # (Usually "${PROJECT_DIR}/Runner/GoogleService-Info.plist")

    if [ -f "$GOOGLESERVICE_INFO_FILE" ]; then
        echo "Using GoogleService-Info.plist from ${GOOGLESERVICE_INFO_FILE}"

        # Get GOOGLE_APP_ID from GoogleService-Info.plist file
        APP_ID="$(grep -A1 GOOGLE_APP_ID ${GOOGLESERVICE_INFO_FILE} | tail -n1 | sed -e 's/.*\<string\>\(.*\)\<\/string\>/\1/')"

        # Run scripts to upload dSYMs to Firebase crashlytics
        "$PODS_ROOT/FirebaseCrashlytics/run" -ai "${APP_ID}"
        "$PODS_ROOT/FirebaseCrashlytics/upload-symbols" --build-phase --validate -ai "${APP_ID}"
        "$PODS_ROOT/FirebaseCrashlytics/upload-symbols" --build-phase -ai "${APP_ID}"
        "$PODS_ROOT/FirebaseCrashlytics/upload-symbols" -gsp "${GOOGLESERVICE_INFO_FILE}" -p ios "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"  -ai "${APP_ID}"
        
        echo "Successfully uploaded dSYMs to Firebase Crashlytics!"
    else
        echo "GoogleService-Info.plist not found in ${GOOGLESERVICE_INFO_FILE}"
    fi
fi

字符串

方案2

然而,如果你像我一样,你有你的应用程序的构建方案(如Release-dev,Release-prod,Release-beta);然后这样做,
1.确保你已经正确地设置了你的构建方案,否则接下来的步骤可能对你不起作用。PS:我使用这个medium post
1.确保您在单独的文件夹中为每个方案提供GoogleService-Info.plist;重要信息:您的文件夹结构应类似于以下内容:

config
  |
  |
   --- dev -- GoogleService-Info.plist
  |
  |
   --- beta -- GoogleService-Info.plist
  |
  |
   --- prod -- GoogleService-Info.plist


1.确保您已在以下位置为发布版本启用了dSYM:目标->运行程序->构建设置->构建选项->版本信息格式。应设置为DWARF with dSYM File
x1c 0d1x的数据
1.然后添加一个名为[firebase_crashlytics] Upload dSYMs to Firebase Crashlytics(或其他名称)的运行脚本。
1.复制并粘贴下面的脚本部分:

if [ "${CONFIGURATION}" = "Release" ]; then
    environment="default"

    # Set the current build environment / scheme
    if [[ $CONFIGURATION =~ -([^-]*)$ ]]; then
        environment=${BASH_REMATCH[1]}
    fi

    GOOGLESERVICE_INFO_PLIST=GoogleService-Info.plist

    # And here you can see why that folder structure is important.
    GOOGLESERVICE_INFO_FILE=${PROJECT_DIR}/config/${environment}/${GOOGLESERVICE_INFO_PLIST}

    if [ -f "$GOOGLESERVICE_INFO_FILE" ]; then
        echo "Using GoogleService-Info.plist from ${GOOGLESERVICE_INFO_FILE}"

        # Get GOOGLE_APP_ID from GoogleService-Info.plist file
        APP_ID="$(grep -A1 GOOGLE_APP_ID ${GOOGLESERVICE_INFO_FILE} | tail -n1 | sed -e 's/.*\<string\>\(.*\)\<\/string\>/\1/')"

        # Run scripts to upload dSYMs to Firebase crashlytics
        "${PODS_ROOT}/FirebaseCrashlytics/run" -ai "${APP_ID}"
        "$PODS_ROOT/FirebaseCrashlytics/upload-symbols" --build-phase --validate -ai "${APP_ID}"
        "$PODS_ROOT/FirebaseCrashlytics/upload-symbols" --build-phase -ai "${APP_ID}"
        "${PODS_ROOT}/FirebaseCrashlytics/upload-symbols" -gsp "${GOOGLESERVICE_INFO_FILE}" -p ios "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}"  -ai "${APP_ID}"
        
        echo "Successfully uploaded dSYMs to Firebase Crashlytics!"
    else
        echo "GoogleService-Info.plist not found in ${GOOGLESERVICE_INFO_FILE}"
    fi
fi

  • 在“输入文件”部分中,添加以下文件的位置路径:
  • 项目的dSYM文件的位置:${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}
  • 您的项目的已生成Info.plist文件的位置:$(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)



参见the Firebase docs for more info
就这样!

hjzp0vay

hjzp0vay6#

目前,推荐的方法是添加一个运行脚本阶段,在每次构建时将dSYM上传到Crashlytics。
1.在Xcode中,从项目导航中选择Runner。
1.选择Build Phases选项卡,然后单击+ > New Run Script Phase。
1.将以下内容添加到Shell属性下的“键入脚本.”文本框中:

$PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase --validate -ai <googleAppId>
$PODS_ROOT/FirebaseCrashlytics/upload-symbols --build-phase -ai <googleAppId>

字符串
从生成的DefaultFirebaseOptions文件(appId)或Firebase控制台->项目设置->您的应用程序中重新配置<googleAppId>
x1c 0d1x的数据
来源:here

ijnw1ujt

ijnw1ujt7#

使用最新版本的flutter/crashlytics,
第一个月

Runner -> Build Phases -> [firebase_crashlytics] Crashlytics Upload Symbols
是我唯一需要的东西
整条线看起来像这样:

"$PODS_ROOT/FirebaseCrashlytics/upload-symbols" --flutter-project "$PROJECT_DIR/firebase_app_id_file.json" -ai "1:my_apple_app_id"

字符串
Flutter 3.16.5
firebase_crashlytics:^3.4.9
电话:https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports?platform=flutter

相关问题