The crash reports are a lot more useful when you see your symbolicated application frames.
In order to symbolicate the reports, Shake needs the dSYMS which can be found on your system.
Unsymbolicated crash reports will appear in the special section on the Shake dashboard and won't be processed if the dSYM files are not uploaded. Dashboard will display the UUID of the required dSYMS which can be found on you system.
Enable dSYMS for debug builds
If you plan using Shake Crash in a development environment, every debug build action needs to generate dSYM files.
When in your project / workspace, click your App.xcodeproj blue project icon — it's usually located at the top of the File Inspector tab in your left-hand pane. Select your main app target and open the Build Settings for that target. Navigate to the Build Options section and choose dwarf with dSYM file option for your Debug/Development configuration.
Run the below command in your terminal
mdfind -name .dSYM | while read -r line; do dwarfdump -u "$line"; done
This will list all of the available dSYM files found on the system so you can identify the ones that are missing.
Missing dSYMs are marked on your Shake dashboard.
DSYMS can be uploaded to Shake with one of the methods listed below.
For the apps built with Bitcode setting, use the Fastlane plugin to grab the correct dSYMS and upload them to Shake.
Upload dSYMS manually via Shake dashboard
Your application dSYM files can be manually zipped and uploaded to the Shake dashboard.
To access your application mapping files on the Shake Dashboard click your avatar and navigate to My Account › Apps and click on your application name. Once the menu is expanded click the Mapping files.
Symbolication files are located in the project build folder which is easily accessed by navigating to Xcode Preferences › Locations › Derived Data and clicking the Finder folder link.
For archived applications with Bitcode enabled, which have already been uploaded to the AppStore, use the Xcode Organizer tool (Xcode › Window › Organizer) to manually download the AppStore generated debug symbols by clicking the "Download Debug Symbols" button on the right hand pane.
Make sure to ZIP the symbolication files before dropping them on the Shake dashboard.
Upload dSYMS using RunPhase script
Shake ships with the
upload-symbols.shscript which uploads dSYMS to Shake servers.
When your project is opened with Xcode, select the Scheme and then EditScheme in the dropdown menu.
Expand the Build Action options and select Post Actions. Select the + icon and add a new Run Script Phase to build post actions.
This ensures that latest dSYMS are uploaded after every build process. Make sure to replace the placeholder values with the correct values for your environment.
Path/to/upload-symbols.sh \--client_id your_client_id \--client_secret your_client_secret
This method is not suitable for apps using Bitcode binary format.
If your reports are not being symbolicated, make sure the script is working properly by doublechecking the Xcode Build log for Shake upload script errors.
When viewing the Build log, search for "SHAKE_SCRIPT" keyword to identify potential problems and check if the upload was successful.
Upload dSYMS using fastlane plugin
Fastlane is an open source platform aimed at simplifying mobile development tasks. It handles authentication with App Store Connect and downloading dSYM files.
Use this method if your app has Bitcode format enabled.
It is recommended that you use
Gemfile to define your dependency on fastlane.
This will clearly define the fastlane version to be used and its dependencies, and will also speed up fastlane execution.
First of all, you should run
bundle init command which will generate Gemfile.
After the Gemfile is generated, add
Now, your newly created Gemfile should look like this:
source "https://rubygems.org"gem "fastlane"
Next, run the
bundle install command which will install fastlane and all associated dependencies.
Navigate your terminal to your project's directory and run
fastlane init command.
For more info about installing fastlane, visit the fastlane docs.
Installing Shake plugin
bundle exec fastlane add_plugin upload_symbols_to_shake
Using the plugin
If you have Bitcode enabled in your application's project settings, dSYM files are generated by the App Store when your app is recompiled after the upload, and will need to be downloaded by fastlane.
In this situation you can use Shake plugin with download_dsyms to upload dSYM files:
lane :refresh_dsyms dodownload_dsyms(version: "latest")upload_symbols_to_shake(client_id: "<Shake client id>", client_secret: "<Shake client secret>", bundle_id: "<Bundle id of project>", plist_path: "<Path to Info.plist>")end
lane :refresh_dsyms dogymupload_symbols_to_shake(client_id: "<Shake client id>", client_secret: "<Shake client secret>", bundle_id: "<Bundle id of project>", plist_path: "<Path to Info.plist>")end
You can also pass the dSYM file paths manually:
upload_symbols_to_shake(client_id: "<Shake client id>", client_secret: "<Shake client secret>", bundle_id: "<Bundle id of project>", dsym_array_paths: ["./App1.dSYM.zip", "./App2.dSYM.zip"], plist_path: "<Path to Info.plist>")