firebase-ios-sdk: upload-symbols fails to fetch settings causing uploading of dsyms to Firebase to fail.
[REQUIRED] Step 1: Describe your environment
- Xcode version: 11.5
- Firebase SDK version: 6.26.0
- Firebase Component: Crashlytics
- Component version: 4.1.1
- Installation method:
CocoaPods
[REQUIRED] Step 2: Describe the problem
Steps to reproduce:
When uploading dSYMs to Firebase the upload-symbols command fails with the following error:
Fetching upload-symbols settings...
error: Could not fetch upload-symbols settings: An unknown error occurred fetching settings.
This has previously worked, however when updating to the most recent version of Firebase and Crashlytics it fails
Relevant Code:
/path/to/pods/directory/FirebaseCrashlytics/upload-symbols -gsp /path/to/GoogleService-Info.plist -p ios /path/to/dSYMs
About this issue
- Original URL
- State: closed
- Created 4 years ago
- Reactions: 20
- Comments: 33
https://firebase-settings.crashlytics.com/ 404 and error: Could not fetch upload-symbols settings: The request timed out. CI with firebase all fail~~~!!!
In my case the error was
And it was resolved after I went to Firebase Console and enabled Crashlytics for this particular app within the project.
path/FirebaseCrashlytics/upload-symbols -gsp path/GoogleService-Info.plist -p ios xxx.app.dSYM
Fetching upload-symbols settings… error: Could not fetch upload-symbols settings: The request timed out.
Firebase has acknowledged this problem on the status page: https://status.firebase.google.com/incident/Crashlytics/20006
My builds are broken by this.
Running upload-symbols in Build Phase modeValidating build environment for Crashlytics...Fetching upload-symbols settings...error: Could not fetch upload-symbols settings: An unknown error occurred fetching settings.We were having similar problems and found the following Xcode Run Script Build Phase works reliably. ${PODS_ROOT}/FirebaseCrashlytics/upload-symbols -bp The -bp switch is for --build-phase which we found from running $upload-symbols --help in a terminal. That help documentation says the following about the command line arguments -bp, --build-phase “Build Phase Mode is meant to be run as an Xcode Run Script Build Phase. It finds the dSYMs and platform from the build environment variables, instead of having the caller pass them in. With this flag, <paths> and --platform can be omitted.” If you define the script with the -d flag for debug you get detailed debug info.
It’s unfortunate that the Firebase Crashlytics online docs regarding the definition of this Xcode Run Script Build Phase is out of date and incomplete.
I solved this issue by enabling Crashlytics on firebase. I am still used to Fabric where Crashlytics is automatically enabled. Once I enabled Crashlytics in the firebase console for the corresponding GoogleService-Info.plist I was able to Archive without this error.
I got it working again. I updated via CocoaPods from 6.28.0 to 6.28.1 and re-downloaded the GoogleService-Info.plist file. I think the settings error was due to a stale version of the plist. After this I got a second error:
Could not complete submission of dSYM at /path/my_app.app.dSYM: Error Domain=com.crashlytics.mac.error-domain.process-dsym Code=2 "File no longer exists at (null)" UserInfo={NSLocalizedFailureReason=File no longer exists at (null)}This second error turned out to be due to the fact that I was trying to use the zipped dSYMs generated by fastlane. After unzipping, they are in a package rather than a regular directory. After moving them from the package to a directory, it worked fine. It now also works with the dSYMs downloaded from the App Store.To wrap it up: it was an outage on Firebase side and once they realized what’s happening they fixed it in less than 2 hours
@kevinkokomani Nothing had changed about the project other than updating the pods to use FirebaseCrashlytics instead of Fabric. The project builds fine it is only when running the upload-symbols that I get the error.
At my company we must run that script ~ 200 times a day as part of automation on CI. We implemented a strategy to invoke the script 4 times with 10 second intervals if it fails. Even with this strategy it fails a couple of times a day! We use the script upload-symbols from that page.
Here is the error.
Here is the hack, really bad temporary solution! It still save a couple failures a day!