dSYM download when Bitcode is disabled - ios

To use the Rollbar service, Bitcode needs to be disabled for traceback symbolization. I also have to upload the dSYM file to Rollbar. But where do I get the dSYM file when Bitcode is disabled? Normally I can download the file from App Store Connect but it seems that I only can download them from the App Store Connect when Bitcode is enabled - or am I wrong?. I do not see any download links if Bitcode is disabled.

Seems like dSYM files are only accessible through App Store Connect when Bitcode is enabled. If you have Bitcode enabled in your application’s project settings, the dSYM files available on your machine will not contain the information needed to symbolicate crash reports. Instead, dSYM files are generated by the App Store when your app is recompiled after upload.
That's why, we need to use the local dSYM files. Locate the files from the Xcode Organizer. Go to Window > Organiser > Select the app > Select the build > Right click on it > Select "Show in Finder" > Right click on the file > Choose "Show Package Contents" > Finally, go to the dSYMs folder.

Related

Firebase Crashlytics: Upload dSYMs show warning & Firebase console show dSYM required (iOS)

I have uploaded dSYMs to Firebase with upload-symbols command which is downloaded from AppStore Connect. Most of the dSYMs is uploaded successfully but it shows warnings for few dSYMs. Bitcode is enabled in my app & using 'DWARF with dSYM File' for 'Debug information format' in build settings.
I am getting the following warning for a few dSYMs:
warning: Crashlytics found a dSYM with hidden symbols at path: /Users/name/Downloads/appDsyms/c362ba63-3100-3a48-9040-72af1fe519e3.dSYM. This will result in hidden stack frames for that library in Crashlytics. This can occur if you have bitcode enabled in your app. If you have chosen to upload the symbols for your app to Apple, make sure to download the symbolicated dSYMs from Apple through Xcode or iTunes Connect. If you have chosen NOT to upload symbols to Apple, you can deobfuscate your dSYMs manually with the BCSymbolMaps found within the archive of your application using the following command: dsymutil --symbol-map <BCSymbolFile> <dSYMFileWithHiddenSymbols>.This will perform an in-place deobfuscation of the provided dSYM.To silence this warning, pass the --skip-dsym-validation flag to upload-symbols / run.
Used command for uploading dSYMs:
/ProjectPath/Pods/FirebaseCrashlytics/upload-symbols -gsp /ProjectPath/GoogleService-Info.plist -p ios /DsymsPath/appDsyms
Firebase console is showing dSYM required:
Firebase console is showing dSYM required
In archive file you will find folder "BCSymbolMaps", copy it anywhere
Copy your c362ba63-3100-3a48-9040-72af1fe519e3.dSYM to c362ba63-3100-3a48-9040-72af1fe519e3.zip.
In this zip file you will find file \Content\Resources\c362ba63-3100-3a48-9040-72af1fe519e3.plist
In this file you need key "DBGOriginalUUID". This key is file name for needed from BCSymbolMaps folder. (Let it be XXXXXXX. So you need find file XXXXXXX.bcsymbolmap in folder BCSymbolMaps which we got from xcarchive.)
Now we have everything for decoding our dSYM file. Just run next
dsymutil --symbol-map /Users/name/Downloads/appDsyms/XXXXXXX.bcsymbolmap /Users/name/Downloads/appDsyms/c362ba63-3100-3a48-9040-72af1fe519e3.dSYM
Now you can repeat sending dSYMs to server.

Splunk Mint: Failed to archive dSYMs for "MyApp" to "/tmp/splunk-mint-dsyms"

How to fix this error?
Splunk Mint: Archiving "MyApp" to "/tmp/splunk-mint-dsyms/MyApp.zip"
adding: MyApp
zip error: Interrupted (aborting)
Splunk Mint: Failed to archive dSYMs for "MyApp" to "/tmp/splunk-mint-dsyms"
Command /bin/sh failed with exit code 252
Second error is
Splunk Mint: Archiving "MyApp" to "/tmp/splunk-mint-dsyms/MyApp.zip"
adding: MyApp (deflated 68%)
Splunk Mint: ERROR "400" while uploading "/tmp/splunk-mint-dsyms/MyApp.zip"
Please remove run script added for auto upload DSYM file.
And manually upload DSYM for crash report symbolication.
Please check for how to upload DSYM manually.
Download dSYM bundles using Xcode Organizer after archiving your app
In Xcode, from the Xcode menu select Window > Organizer.
In Xcode Organizer, click the Archives tab.
Under iOS Apps, select your app from the list.
From the Version column, select the archive for your app, displayed as App Version (Build Uuid).
Click Download dSYMs to download the dSYM bundles from Apple.
Compress and upload dSYM bundles to MINT
In Finder, find the dSYM bundles (archive files) you just downloaded.
Right-click the archive file and select Show package contents.
Open the dSYMs folder.
Compress each dSYM file named with your app's build UUID to a ZIP file.
Open MINT Management Console by logging in to mint.splunk.com.
Select your app project.
Click the Settings dashboard.
Under Project Settings, click dSYMs.
Click Browse & Upload, then navigate to and select the dSYM bundles you compressed.
For more info check out docs
The answer that worked for me was contained here:
Run Script Phase after dSYM is generated with Xcode 10 (on build)
Adding sleep 5 to the top of:
iOS/Pods/SplunkMint/SplunkMint.framework/Resource/splunkmint_postbuild_dsym_upload_script.sh
A hack, yes, but better than having to disable the upload completely IMO.

Fabric crashlytics showing Missing .dSYM file for latest iOS app version UUID

I have uploaded several version of iOS app in app store with Crashlytics enabled, where some old version got crashed. I am trying to get crash logs from Crashlytics(fabric) but it is showing 0 crashes, 'Missing dSYM file', and UUID of latest app version. Here i can upload only .zip file of .dSYM files which has latest UUID, but how can we get older app crash reports(logs).
Uploading symbol files to Fabric
In xcode go to Window -> Organiser
Find the relevant build that was uploaded to AppStore and click "Download DSYMs"
Right-click build and choose "Show in finder"
Right-click the selected xcarchive file and choose "Show package contents"
Go to DSYMs folder. If you have performed step 2, there should be one file called NP.app.dSYM and some more [Unique UUID].dSYM files (if Bitcode is enabled)
Copy all DSYM files, paste in desktop and compress them into one zip
Go to https://fabric.io, Click the Settings icon (upper right corner).
Go to Apps -> [app name] -> Missing dSYMs and upload the zip

Why aren't the crashlogs from Testflight symbolicating in Xcode?

I just started getting crash reports from Testflights for a pre-release app that I'm working on, but for whatever reason Xcode isn't properly symbolicating the logs.
The build is available (was built, archived and uploaded on this computer in this version of Xcode), so what am I missing here? Why aren't these crash logs symbolicated?
Apparently this is a bug that started happening when Apple started accepting bitcode. Not all of the dSYMs are downloaded when you click on 'Download dSYMs…' in the Xcode organizer. Here's how I fixed it:
Manually downloaded the dSYMs from the build page in iTunes Connect
Right-clicked on the crash log in Xcode and opened it in Finder
The xcrashpoint file you'll find is an archive, so right-click and show package contents
Drill down to your .crash file(s)
Copy the .crash file(s) to a different directory, for instance the desktop
Copy the dSYMs folder you downloaded to the same directory
Open Terminal, cd to the folder
In terminal, set the developer dir path:
export DEVELOPER_DIR='/Applications/Xcode.app/Contents/Developer'
Then symbolicate the files with (replace your paths and filenames here):
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash name_of_crashfile.crash name_of_downloaded_dSYMs_dir/ > output.log
And voila! You have your symbolicated crash log.
I still get this in Xcode 10. As a work around. Add the crash logs to your devices logs and they will be symbolicated. At least in my experience.
Step 1-
In Xcode Window>Devices & Simulators [select your device on the left]>view device logs.
Step 2-
Then Xcode> Window> Organizer > Crashes tab.
Right click a crash and click show in finder. This shows .xccrashpoint files. Right click> show package contents. Drill down into the folders until you see the .crash files. Then drag them into the device logs list we opened in step 1

Xcode - There are no dSYMs available for download

I want to extract the dSYM file from but when I click on "Download dSYMs..." in the Organizer I get the follow message: "There are no dSYMs available for download.".
I'm using Xcode 7.2 with a workspace generated by Cocoapods 0.39.
How can I get them?
NON-BITCODE
Here's a GIF on how to get DSYMS, compress and upload to crashlytics/fabric
Press Window > Organizer
Right-click on your app> Show in Finder
Right-click on first .xcarchive file > Show package contents
BITCODE ENABLED
You'll need to download dsyms from App Store Connect. The easiest would be to use fastlane
lane :refresh_dsyms do
download_dsyms # Download dSYM files from App Store Connect
upload_symbols_to_crashlytics # Optional for uploading to Crashlytics
end
I think #Jordan is correct--it seems that iTunes Connect is recompiling apps with bitcode so that the UUID changes, and the dSYM inside the .xcarchive can't actually be used to symbolicate the app (this appears to be a new development).
You can download the correct dSYM from iTunes Connect. Login, go to My Apps, select your app, then tap on the Activity tab at the top. Tap on the relevant build, and, assuming the app was submitted with symbols in the first place, you should see the option to "Download dSYM."
The file you get is called dSYMs (without an extension) but it is in fact a zip file. Add the .zip extension, unzip, and you'll find your dSYM(s) inside.
(I needed to do this this week since Crashlytics was complaining about a missing dSYM.)
Actually you can't download dSYM file from iTunesConnect now. There is another way to get that file.
Xcode -> Window -> Organizer -> Show xcarchive file in Finder -> Right Click Your xcarchive file -> Select "Show Package Contents"
You can see your dSYM file now.
bitcode must be enabled
if you want to get your dSYM from iTunesConnect
Build Settings > Build Options > Enable Bitcode > YES
Select device "Generic iOS Device" (or anything that works)
Archive
When exporting from archive
CHECK "include app symbols for your application to receive symbolicated crash logs from Apple"
CHECK "include bitcode"
Upload using Application Loader
Once your app has been successfully uploaded to iTunesConnect you can go to iTunesConnect.com > MyApps > [YOUR APP] > Activity > All Builds > [YOUR BUILD] > General Information > Includes Symbols > Download dSYM
#xcode8.2.1 #osx10.12.6
I've found a solution from https://twittercommunity.com/t/not-matching-uuid-bitcode/61000/2
"Crashlytics was reporting missing dSYMs with UUID looking like this: 83889b11dedd363c8e5ee56233bcc90c.
As I said, I followed the guide7 but I couldn't find that UUID. So I went in the iTunesConnect and I did the following:
Select the app
Choose the Activity tab on top
Select the build version Crashlytics is complaining about
Click the Download dSYM blue link
The downloaded file is called dSYM has no extension but it is actually a zip. So I added the zip extension and unzipped it. Inside the unzipped folder I found many dSYM files, one on which has called 83889B11-DEDD-363C-8E5E-E56233BCC90C.dSYM which matched the UUID Crashlytics was reporting as missing (even if formatted in a different way). Note also that this file is not inside the xcarchive.
Hope it can help!"
in my case, it works like charms
In my case, I could not find a dSYM file of my app in the Archives folder. If you face this, go to your Project Build Settings > Build Options > Debug Information Format and make sure it is set to DWARF with dSYM file
If dSYMs folder in package contents is empty (Ted's answer), try to check:
Build Settings > Build Options > Enable Bitcode is set to YES (Jacksonkr's answer)
Build Settings > Build Options > Debug Information Format is set to DWARF with dSYM file (daisura99's answer)
Please check them both.
Then in show package contents -> dSYMs folder, this time, you should find something.
In my case, it worked.
Form latest updates you no need to upload dSYM files manually, automatic upload is done with below process.
Step-1: Goto Target-> Build Settings -> Search for "debug information format". Set Debug Information Format to DWARF with dSYM File for all your build types.
Step-2: Goto Build Phases -> Expand Run Script and add script & input files
In Script:
"${PODS_ROOT}/FirebaseCrashlytics/run"
In input files:
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}
$(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)
Example Screenshot:
Step-3: Finally add one more script to upload dSYM files
${PODS_ROOT}/FirebaseCrashlytics/upload-symbols -gsp
${PROJECT_DIR}/Your_path/GoogleService-Info.plist -p ios
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}
Here, in the 2nd line of the script ${PROJECT_DIR}/Your_path/GoogleService-Info.plist -p ios update with your project path means your app schema name
If you got error while running the app follow my answer Xcode 10.2.1 Command PhaseScriptExecution failed with a nonzero exit code
Error:
Command PhaseScriptExecution failed with a nonzero exit code

Resources