iOS and FirebaseCrashlytics

青春壹個敷衍的年華 提交于 2020-05-22 04:15:20

问题


I am trying to follow the instructions on Firebase Docs to upload missing required dSYMs. However I am stuck on running the uploader script.

In my build phases I have

"${PODS_ROOT}/FirebaseCrashlytics/upload-symbols -gsp${SRCROOT}/GoogleService-Info.plist -p ios ${SRCROOT}/appDsyms"

When I try building the iOS app with this, I get the error:

line 4: /path/to/Pods/FirebaseCrashlytics/upload-symbols -gsp/path/to/GoogleService-Info.plist -p ios /path/to/appDsyms: No such file or directory

Command PhaseScriptExecution failed with a nonzero exit code

When I try running the script from the terminal I get the error:

No Google App ID or Google Services file provided

I have verified that I have a Google Services file and am able to run my project using other firebase services that rely on it. I used to be able to upload Dysm files directly into the Firebase Console, but that changes on March 1.

Should this command be run as an XCode script or a command from the terminal? And, more importantly, does anyone understand how to resolve this issue?


回答1:


After ours of struggling with this problem finally solved it using this approach:

use this command in Terminal: /path/to/pods/directory/FirebaseCrashlytics/upload-symbols -gsp /path/to/GoogleService-Info.plist -p ios /path/to/dSYMs

Important thing is instead of /path/to/pods/directory you should enter the path to your pods folder in your application folder, and instead of /path/to you should enter the path to the GoogleService-Info.plist which it's in your project folder too. And the last one is, instead of /path/to/dSYMs you should enter the path to your archive which is with the format of .xcarchive.

For finding the .xcarchive path, you shoud first archived your application then go to Organizer of Xcode and select your build then right click on it and select Show in finder and then right click on your .xcarchive file and select Show package contents. This is it, you can copy this path and paste it instead of /path/to/dSYMs and then hit enter to start uploading to Firebase crashlytics.

Check out this link for more information: Firebase Docs




回答2:


As of May 2020:

After Fabrics shut down, many developers faced such issues because Fabric was automatically creating the script to upload dSYM files from Xcode and we never pay attention to it.

Now as Fabric is replaced with FirebaseCrashlytics, in order to achieve this automatic mechanism, you can create a new run script and paste this script there:

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

This script will get the dSYM files and upload them to firebase servers so that you can see the crashes.

For multiple Schemes:

If your project has multiple schemes, you can simply create multiple such scripts by changing the path to the Google Plist file.

NOTE: You can also manually upload the dSYM files using upload-symbols tool [Check here], but it's always better to automate the process wherever we can.




回答3:


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

I replaced my GoogleService-Info.plist in additional folder and made directory changes in shell script. Probably you should do the same

For terminal command you better drag and drop necessary file in terminal then copy selected path

/path_to_pods/FirebaseCrashlytics/upload-symbols -gsp /path_to_google_service/GoogleService-Info.plist -p iOS /path_to_dSYMs




回答4:


While implementing FirebaseCrashlytics(Currently is in beta) for Crashlytics

Add new run script from Build Phases and add following

"${PODS_ROOT}/FirebaseCrashlytics/run"

In Input files sections add

${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}

and

$(SRCROOT)/path to/GoogleService-Info.plist

If you still get dSYM missing error then try to run from terminal

/path/to/pods/FirebaseCrashlytics/upload-symbols -gsp /path/to/GoogleService-Info.plist -p ios /path/to/dSYMs

For path to FirebaseCrashlytics and GoogleService-Info.plist drag and drop from the actual location For dSYMs path will be ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}

To get that hit the command with your project .xcodeproj and target xcodebuild -project YourProject.xcodeproj -target YourTarget -showBuildSettings
and replace your specific path

Please take not of following while implementing Crashlytics
1. Run application in release mode
2. While testing disconnect device from mac
3. Set correct GoogleService-Info.plist
4. If you rename it, make sure you set the correct file name whenever required.




回答5:


Your Google Services path seems to be off. Here is an example of what my build phase looks like, which is able to successfully upload dSYM's. I suggest following these instructions one more time https://firebase.google.com/docs/crashlytics/get-deobfuscated-reports-new-sdk?platform=ios&authuser=0.

find /Users/okodysh/Library/Developer/Xcode/DerivedData/myApp-ftqksfkpdvisbtaozpqzzjiizpfk/Build/Products/Debug-iphonesimulator -name "myApp.app.dSYM" | xargs -I {} $PODS_ROOT/FirebaseCrashlytics/upload-symbols -gsp /Users/okodysh/Desktop/iOSApps/myApp/myApp/GoogleService-Info.plist -p ios {}




回答6:


2020 FirebaseCrashlytics solution

You have two solutions :

1) From the command line

Go to your project folder and run :

./Pods/FirebaseCrashlytics/upload-symbols -gsp GoogleService-Info.plist -p ios <path_to_your_dsyms_zip>

You can get your dsym in Xcode organizer > right click on the archive > show in Finder -> Show content -> go to dsymm folder and compress it

2) From Xcode Build Phases

As described here (Firebase doc), you can add a Run Script phase in Xcode with this content :

"${PODS_ROOT}/FirebaseCrashlytics/run"

You also have to add these two input files under the run script :

${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}

and

$(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)




回答7:


Hmm nothing worked for me but changing this:

"${PODS_ROOT}/FirebaseCrashlytics/run" 

to this:

"${PODS_ROOT}/FirebaseCrashlytics/run" -gsp "${PROJECT_DIR}/project_main_dir/google-services-files/iOS-GoogleService-Info.plist" 

EDIT:

for those of you trying to complie to iOS's Catalyst:

you don't have to download two different Google JSON files. You should use only one (cause you have only 1 target). IF you want to upload a mac version of your app, just go to App Store Connect and create a new release for OSX (in the same page of your app)




回答8:


Finally, I've figured it out and wrote a shell script to handle all this for me

Feel free to to use it: https://github.com/cs4alhaider/firebase-upload-symbols



来源:https://stackoverflow.com/questions/60821249/ios-and-firebasecrashlytics

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!