Xcode Error with Crash Symbol Upload: symbolFileUp

2019-03-09 03:40发布

问题:

I followed the guide located here:https://firebase.google.com/docs/crash/ios

But when I'm done and attempt to build, I get the following error: /Users/--/Desktop/Test2/Pods/FirebaseCrash/upload-sym-util.bash:349: error: symbolFileUploadLocation: The caller does not have permission

Anyone have any ideas? I've searched on google, stack overflow and google groups and don't see anyone else stating this issue that I can find.

Running 10.11.5, Xcode 7.3.1

When I open the source for the error, it takes you to upload-sym-util.bash, line 349, here is a snippet of that area:

    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

回答1:

You need to first accept ToS at https://console.cloud.google.com/

Then give editor role to your Service Account created for uploading symbols as described here: https://firebase.google.com/docs/crash/ios#set_up_crash_reporting



回答2:

There was a mistake in the documentation: steps were omitted. The role of the "Symbol Upload service account" has to have editor privileges to update the symbol database. The following ("step 1½") should have appeared between steps 1 and 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.

Sorry about the confusion.



回答3:

let me add to the answers, rename the json file into ServiceAccount.json, drop it into xcode's pods folder and replace google's suggested path with this one, the advantage is the project will be portable if you transfer it to someone else...

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


回答4:

  1. Ensure that you give the "Symbol Upload service account" the Project > Editor role when you create the service account. The service account will not show up in Permissions > IAM if you neglect to assign a role.
  2. When the Xcode run script executes it creates two files int the $HOME/Library/Preferences/ directory: com.google.SymbolUpload.plist and com.google.SymbolUploadToken.plist. If you create a new service account (or private key), then you need to delete these two files to wipe out your old service account information. Firebase documentation highlights this, but it deserves repeating.



回答5:

Worked for me if you add it from Service Account screen. Click Permissions and add it as an editor.



回答6:

For those of you who are confused by the second step of the guide (mentioned in @Robert answer above), you need to be owner of the firebase app to change service accounts.



回答7:

I was getting a similar error when I tried to use a second Firebase database in my project. However, I forgot that I added crash analytics code to the Run Script that was specific to the first database. Once I deleted the Run Script code in Build Phases, the problem with the symbol upload file went away.