【问题标题】:iOS Firebase Crash Reporting - Error running build scriptiOS Firebase 崩溃报告 - 运行构建脚本时出错
【发布时间】:2017-01-19 01:41:42
【问题描述】:

在运行脚本上传符号文件时出现以下错误(每次我尝试构建我的项目):

upload-sym-util.bash:351: error: symbolFileUploadLocation: The API Key and the authentication 证书来自不同的项目。

这是我的构建脚本:

if [ "$CONFIGURATION" == "Debug" ]; then
    GOOGLE_APP_ID=<app-id>
    "${PODS_ROOT}"/FirebaseCrash/upload-sym "${SRCROOT}"/<app>/Firebase/CrashReportingKey-Dev.json
else
    GOOGLE_APP_ID=<app-id>
    "${PODS_ROOT}"/FirebaseCrash/upload-sym "${SRCROOT}"/<app>/Firebase/CrashReportingKey.json
fi

我做过/检查过的事情:

  1. GOOGLE_APP_IDCrashReportingKey*.json 与同一个项目相关联。
  2. 我的GoogleService-Info*.plist 文件有API_KEY 字段。
  3. 选中“仅在安装时运行脚本”框,它允许我运行应用程序,但实际上并不在开发环境中运行脚本。因此崩溃会发送到 Firebase,但不会被符号化。

我愿意接受任何想法。谢谢!

【问题讨论】:

  • 您是否尝试删除 GoogleService-Info*.plist 然后重新下载安装?
  • 我现在正在经历完全相同的问题。
  • @i6x86 我没有“重新安装”它们,但我确实再次下载并验证它们与我项目中的相同。
  • 您过去是否能够为同一个项目上传符号?这个问题今天仍然存在吗?
  • @DougStevenson 这是我第一次尝试将 Firebase 崩溃报告添加到任何项目中。自从我提出这个问题以来,我没有机会再试一次,但我知道没有任何改变,所以我想它仍然会发生。

标签: ios swift firebase firebase-crash-reporting


【解决方案1】:

您是正确的,没有办法覆盖 GoogleService-Info.plist。但是,仍有一种方法可以覆盖上传脚本从该文件中使用的信息。

  1. 打开.json对应的GoogleService-Info.plist。
  2. 搜索 GOOGLE_APP_ID 和 API_KEY。
  3. 像这样调整构建脚本:

    export FIREBASE_APP_ID=<GOOGLE_APP_ID>
    export FIREBASE_API_KEY=<API_KEY>
    
    "${PODS_ROOT}"/FirebaseCrash/upload-sym "ServiceAccount.json"
    

在您的情况下,您的最终脚本应如下所示:

    if [ "$CONFIGURATION" == "Debug" ]; then
        export FIREBASE_APP_ID=<app-id>
        export FIREBASE_API_KEY=<API_KEY for dev>
        "${PODS_ROOT}"/FirebaseCrash/upload-sym "${SRCROOT}"/<app>/Firebase/CrashReportingKey-Dev.json
    else
        export FIREBASE_APP_ID=<app-id>
        export FIREBASE_API_KEY=<API_KEY for release>
        "${PODS_ROOT}"/FirebaseCrash/upload-sym "${SRCROOT}"/<app>/Firebase/CrashReportingKey.json
    fi

【讨论】:

  • 我已将此标记为已接受的答案,因为它实际上解决了问题中的问题。我的回答不允许两个崩溃环境。
【解决方案2】:

我解决了:

在终端: rm $HOME/Library/Preferences/com.google.SymbolUpload*

Xcode: 产品 -> 清洁

【讨论】:

  • 感谢这个小提示。我将 rm $HOME/Library/Preferences/com.google.SymbolUpload* 添加到构建脚本中,这样我实际上可以支持多个 Firebase 帐户。
【解决方案3】:

问题在于GoogleService-Info.plist 文件的名称。

在我的项目中,我有以下文件:

  • GoogleService-Info.plist
  • GoogleService-Info-Dev.plist
  • CrashReportingKey.json
  • CrashReportingKey-Dev.json

Firebase 崩溃报告上传脚本始终会准确查找名为 GoogleService-Info.plist 的文件。由于它找到了一个,并且我告诉脚本使用CrashReportingKey-Dev.json,它抛出了项目不匹配错误。

根据我的研究,无法告诉 Firebase 崩溃报告上传脚本您要使用哪个 *Info.plist 文件,因此我决定只上传符号文件以用于发布版本,这很好。

我的运行脚本现在如下所示,并且可以正常工作。

if [ "$CONFIGURATION" == "Release" ]; then
    GOOGLE_APP_ID=<app-id>
    "${PODS_ROOT}"/FirebaseCrash/upload-sym "${SRCROOT}"/<app>/Firebase/CrashReportingKey.json
fi

然后我从我的项目中删除了CrashReportingKey-Dev.json

【讨论】:

    【解决方案4】:

    就我而言,我必须通过运行以下命令来重置我的 OAuth 凭据: rm $HOME/Library/Preferences/com.google.SymbolUpload*

    如此处所述:https://firebase.google.com/docs/crash/ios

    现在对我来说很好用!

    【讨论】:

    • 你在哪里运行的?在终端或构建阶段?
    【解决方案5】:

    我今天遇到了这个错误。 我找到了这个配置,只需将这个 GOOGLE_APP_ID 替换为您的 GoogleService-Info.plist 中的值

    在这里查看图片,抱歉我没有发布图片的权限 Replace GOOGLE_APP_ID

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多