cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Automatically uploading iOS dSYMs on Xcode build phase

roliveira_ww
Visitor

Hi Dynatrace team, 

Our iOS project currently uses Firebase to process dSyms and capture crash reports. We use a build phase on our project that executes a script that the Firebase iOS SDK provides.

"${BUILD_DIR%Build/*}SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"

We are now transitioning to Dynatrace and I'm looking on how to do the equivalent using the Dynatrace SDK.

Upon reading the documentation on https://docs.dynatrace.com/docs/platform-modules/digital-experience/mobile-applications/analyze-and-... it says

The DSSClient is bundled with OneAgent, and you can find it in the release package under Symbolication/DTXDssClient

Does it mean that we can access this DSSClient inside the Dynatrace Swift package that we have installed on our project?

I'm trying to mirror the Firebase command above to locate the application but I haven't been successful. Is there an example of how it would look like to invoke the DTXDssClient from Xcode build phase and Dynatrace installed via SPM?

Thank you very much

 

3 REPLIES 3

Patrick_H
Dynatrace Champion
Dynatrace Champion

Hi!

this seems to be an outdated statement as it is only valid if you manually add the agent - then you have it bundled in the downloaded zip file.

I suggest to fetch it via cluster UI: https://docs.dynatrace.com/docs/shortlink/mobile-symbolication#get-dssclient or in case you always want the latest version in CI you can use https://api.mobileagent.downloads.dynatrace.com/latest-dss-client to fetch the latest version (but keep in mind that this direct API does not perform a compatibility check like the webUI does in case you are using a managed cluster that is not running on latest version.

iOS help: https://www.dynatrace.com/support/help/shortlink/ios-hub

Hi Patrick, 

Thank you very much for your reply. For now I decided to just download the DSS client from the website and add it to our codebase. However, when I try to execute it via our build phase or via terminal

./DTXDssClient -h

I'm getting the following output

dyld[10639]: Library not loaded: @rpath/LLDB.framework/Versions/A/LLDB
Referenced from: <BEF7289E-E6CA-3B70-8BDA-244E09C817CE> /Users/raph/Workspace/iOS/iOS/scripts/DTXDssClient
Reason: tried: '/Users/raph/Workspace/iOS/iOS/scripts/LLDB.framework/Versions/A/LLDB' (no such file), '/Applications/Xcode.app/Contents/Developer/../SharedFrameworks/LLDB.framework/Versions/A/LLDB' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Applications/Xcode.app/Contents/Developer/../SharedFrameworks/LLDB.framework/Versions/A/LLDB' (no such file), '/Users/raph/Workspace/iOS/iOS/scripts/LLDB.framework/Versions/A/LLDB' (no such file), '/Applications/Xcode.app/Contents/Developer/../SharedFrameworks/LLDB.framework/Versions/A/LLDB' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Applications/Xcode.app/Contents/Developer/../SharedFrameworks/LLDB.framework/Versions/A/LLDB' (no such file)

It looks like the executable is trying to find the LLDB.framework and I believe it can't because my Xcode is called "Xcode 15.2" instead of just "Xcode". Is there a way to pass the path? Or would the alternative be to paste the framework inside our repo as well?

Thank you again.

Yes, this is because Xcode has a non-standard path. If our fastlane plugin is used this will be automatically fixed, but if you do not want to use fastlane you can manually link it.
The easiest workaround without changing the setup too much is to create a symlink posing as an Xcode installation from the default path e.g.

ln -s /path/to/Xcode\ 15.2/Applications/Xcode.app

iOS help: https://www.dynatrace.com/support/help/shortlink/ios-hub

Featured Posts