Xcode 崩溃符号上传错误:symbolFileUploadLocation:调用者没有权限

Xcode Error with Crash Symbol Upload: symbolFileUploadLocation: The caller does not have permission

我遵循了此处的指南:https://firebase.google.com/docs/crash/ios

但是当我完成并尝试构建时,出现以下错误: /Users/--/Desktop/Test2/Pods/FirebaseCrash/upload-sym-util.bash:349: 错误: symbolFileUploadLocation: 调用者没有权限

有人有什么想法吗?我搜索了 google、stack overflow 和 google 组,没有看到任何其他人说明我能找到的这个问题。

运行 10.11.5,Xcode 7.3.1

当我打开错误的源代码时,它会带你上传-sym-util.bash,第349行,这里是那个区域的片段:

    if [[ "$ERRMSG" ]]; then
        if ((VERBOSE)); then
            xcnote "Server response:"
            plutil -p "$FILE_UPLOAD_LOCATION_PLIST" >&2
        fi
        xcerror "symbolFileUploadLocation: $ERRMSG"
        xcnote "symbolFileUploadLocation: Failed to get upload location."
        return 1
    fi

文档中有一个错误:省略了步骤。 "Symbol Upload service account" 的角色必须具有更新符号数据库的编辑权限。以下("step 1½")应该出现在步骤 1 和步骤 2 之间。

To ensure that the service account has write permission:

  1. On the Permissions page, select IAM from the left menu.
  2. Type "Symbol Upload" into the search box.
  3. The "Symbol Upload service account" must have at least the "Editor" role.

抱歉造成混淆。

如果您从 服务帐户 屏幕添加它,对我有用。单击权限并将其添加为编辑器。

您需要先在 https://console.cloud.google.com/

接受 ToS

然后为您创建的用于上传符号的服务帐户赋予编辑角色,如下所述:https://firebase.google.com/docs/crash/ios#set_up_crash_reporting

对于那些对指南的第二步感到困惑的人(在上面的@Robert 回答中提到),您需要成为 firebase 应用程序的 owner 才能更改服务帐户。

  1. 确保在创建服务帐户时为"Symbol Upload service account"授予项目 > 编辑者角色。如果您忽略分配角色,服务帐户将不会显示在权限 > IAM 中。
  2. 当 Xcode 运行 脚本执行时,它会在 $HOME/Library/Preferences/ 目录中创建两个文件:com.google.SymbolUpload.plistcom.google.SymbolUploadToken.plist。如果您创建一个新的服务帐户(或私钥),那么您需要删除这两个文件以清除您旧的服务帐户信息。 Firebase 文档强调了这一点,但值得重复。

让我添加答案,将 json 文件重命名为 ServiceAccount.json,将其放入 xcode 的 pods 文件夹并替换 google这个的建议路径,优点是如果你把它转移给其他人,这个项目将是可移植的...

# Replace the /Path/To/ServiceAccount.json with the path to the key you just downloaded
"${PODS_ROOT}"/FirebaseCrash/upload-sym "${PODS_ROOT}"/ServiceAccount.json

当我尝试在我的项目中使用第二个 Firebase 数据库时,我遇到了类似的错误。但是,我忘记了我已将崩溃分析代码添加到特定于第一个数据库的 运行 脚本中。一旦我删除了构建阶段中的 运行 脚本代码,符号上传文件的问题就消失了。