Uploading dSYMs to Apteligent Automatically

By adding a build script that runs for each build you release, you'll never have to worry about tracking down your dSYMs again.

In most cases, using Apteligent's server-side symbolication will be the most effective way to maintain the highest level of security (obfuscation) and reduced package size for your app. Here's what you need to set up in Xcode:

In your target's Build Settings, verify the following are set:

  • Strip Debug Symbols During Copy: Yes
  • Strip Linked Product: Yes


For every build you release to testers or users, you have to store the dSYM file and upload it to Apteligent. More information on why this important can be found in our article on iOS Symbolication

Note: Apteligent Server-Side symbolication works for both Device and Simulator builds. 

Uploading dSYM via Xcode Build Script. 

The build script is now available inside the latest version of the iOS library (4.0.1 and higher). After saving the file, make the script executable by running the command:

# chmod +x /PATH_TO_SCRIPT/dsym-upload.sh

In order to configure Xcode to use the script each time you build your app, perform the following:

  1. Select Project in Xcode
  2. Click on the appropriate Target
  3. Select Build Phases tab
  4. Go to Editor on Menu bar and select Add Build Phase. Select Add Run Script Build Phase (note: this step may already be completed if you have used a build script before). 
  5. Log in to your Apteligent Account and go to the App for which you want dSYM uploaded. Navigate to App Settings > Upload dSYMs tab and copy the text under Upload via Build Script and paste it under the textbook for Run Script under Build Phases

    Note for Apps/Project names with spaces:

    If you have spaces in the name of the App/Project, then use double quotes around {SRCROOT} so that it can traverse the path correctly, like:
    source "${SRCROOT}"/CrittercismSDK/dsym_upload.sh

    Alternatively you can also use the absolute path to the script location like (in this case, the path should be updated whenever the current location of the script changes ):
    source "<Absolute Path to Project>/CrittercismSDK/dsym_upload.sh"

    You can also add optional parameters so that Run Script like:

  6. Run & Build; your dSYM will upload to Apteligent. 

Do you use Jenkins for your CI solution? There's a plugin available and you can find information about it here.

Watch the video version:


Have more questions? Submit a request


Article is closed for comments.