You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: improve symbolication and dSYM upload accuracy across platforms (#738)
* Improve symbolication and dSYM upload docs accuracy across platforms
- iOS: Add retroactive symbolication note, prerequisites section (dwarf-with-dsym),
debug mode docs (EMBRACE_DEBUG_DSYM=1), improved troubleshooting
- iOS CI: Fix CLI flag syntax from -app/-token to --app/--token
- Android: Add mapping upload configuration info to crash reporting page
- Android: Document embrace.disableMappingFileUpload Gradle property
- Flutter: Add SPM instructions and DEBUG_INFORMATION_FORMAT requirement for dSYM upload
- React Native 5x: Fix source map path to use embrace-assets directory
- Product: Add retroactive symbolication note to dSYM symbols settings page
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update crash-reporting.md
* Revert RN 5x source map path change — 5.x SDK used the old path
The embrace-assets subdirectory was introduced in 6.x. The 5.x SDK
(verified at tag v5.2.0 in scripts/util/ios.ts) used
$CONFIGURATION_BUILD_DIR/main.jsbundle.map without the subdirectory.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: docs/android/configuration/embrace-gradle-plugin.md
+12Lines changed: 12 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -128,6 +128,18 @@ Whether the Embrace Gradle Plugin should report telemetry on its own performance
128
128
129
129
Whether the Embrace Gradle Plugin should fail the build if it encounters an error during a HTTP request. Defaults to true.
130
130
131
+
### Gradle Properties
132
+
133
+
The following properties can be set in your `gradle.properties` file:
134
+
135
+
#### embrace.disableMappingFileUpload
136
+
137
+
Set to `true` to disable the automatic upload of ProGuard/R8 mapping files and NDK symbol files. This is useful when using Embrace solely as an OTel exporter without sending data to Embrace's backend. Example:
138
+
139
+
```properties
140
+
embrace.disableMappingFileUpload=true
141
+
```
142
+
131
143
#### bytecodeInstrumentation.enabled
132
144
133
145
Global flag that overrides all others & decides whether Embrace should perform any bytecode instrumentation. Defaults to true.
Copy file name to clipboardExpand all lines: docs/android/integration-advanced/crash-reporting.md
+9Lines changed: 9 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -32,3 +32,12 @@ The Embrace SDK does not automatically capture NDK crash reports. To enable NDK
32
32
33
33
If you have obfuscated your application with ProGuard, DexGuard, or R8, the captured crashes will contain obfuscated method names. The Embrace
34
34
Gradle plugin will automatically upload mapping files at build time to get you human-readable stacktraces from production.
35
+
36
+
:::info Configuration
37
+
Mapping file uploads are skipped for debuggable builds or when API credentials are missing. You can control upload behavior with these Gradle properties:
38
+
39
+
-`embrace.disableMappingFileUpload=true` in `gradle.properties` to disable mapping file uploads entirely
40
+
-`embrace.failBuildOnUploadErrors` (default: `true`) in the `embrace` DSL block to control whether upload failures break the build
41
+
42
+
For more details, see the [Embrace Gradle Plugin configuration](/android/configuration/embrace-gradle-plugin).
Copy file name to clipboardExpand all lines: docs/flutter/integration/index.md
+12-2Lines changed: 12 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -48,15 +48,25 @@ import EmbraceCrash
48
48
### Upload symbol files
49
49
50
50
:::info
51
-
Embrace uploads your application's dSYM symbol files using a script bundled with the Embrace iOS SDK. This makes stacktraces from crashes human-readable.
51
+
Embrace requires your application's dSYM symbol files to make stacktraces from crashes human-readable.
52
52
:::
53
53
54
-
On the Xcode **Build Phases** tab, add a new run script. You can find your 5-character app ID and API token in the Embrace dashboard:
54
+
On the Xcode **Build Phases** tab, add a new run script. You can find your 5-character app ID and API token in the Embrace dashboard.
55
+
56
+
If you are using CocoaPods, the `run.sh` script is bundled with the SDK:
If you are using Swift Package Manager, you must download the support utility from https://downloads.embrace.io/embrace_support.zip, extract it, and place the scripts in your project:
Also ensure that `DEBUG_INFORMATION_FORMAT` is set to `DWARF with dSYM File` in your Build Settings. For more details, see the [iOS dSYM Upload guide](/ios/6x/getting-started/dsym-upload).
69
+
60
70
## Android setup
61
71
62
72
In the root-level `build.gradle` file, add the `embrace-swazzler` dependency:
Copy file name to clipboardExpand all lines: docs/ios/6x/getting-started/dsym-upload.md
+27-1Lines changed: 27 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,6 +12,22 @@ When applications are uploaded to the App Store they are often stripped of symbo
12
12
Starting on April 25, 2023 Apple requires all apps to be built with Xcode 14. Apple deprecated bitcode in Xcode 14. This means you may be unable to download dSYMs from Apple in the near future. We recommend that you setup automatic uploads. [Apple Announcement](https://developer.apple.com/news/?id=2ygwqlzd)
13
13
:::
14
14
15
+
:::info Retroactive Symbolication
16
+
Embrace performs symbolication server-side and retroactively. If a dSYM is uploaded after a crash has already been received, Embrace will automatically re-symbolicate older crashes when the matching dSYM arrives. This means you don't lose crash data if dSYMs are uploaded later.
17
+
:::
18
+
19
+
## Prerequisites
20
+
21
+
Before setting up dSYM uploads, ensure your Xcode project is configured to generate dSYM files:
22
+
23
+
1. Select your project in the Project Navigator
24
+
2. Select the appropriate target
25
+
3. Go to **Build Settings** > **All**
26
+
4. Search for **Debug Information Format**
27
+
5. Set the value to **DWARF with dSYM File** (`dwarf-with-dsym`) for both Debug and Release configurations
28
+
29
+
If this setting is set to `dwarf` (without dSYM), no dSYM files will be generated and the upload script will skip the upload with a warning message.
30
+
15
31
## Automatic Uploads
16
32
17
33
Automatically uploading dSYM files is the recommended approach for symbolication. This ensures that crash reports are properly symbolicated without manual intervention.
@@ -95,11 +111,21 @@ If you are using GitHub Actions, you may instead use [embrace-io/action-symbol-u
95
111
96
112
If your crashes are not being symbolicated:
97
113
98
-
1. Verify that dSYM files are being generated in your build settings
114
+
1. Verify that `DEBUG_INFORMATION_FORMAT` is set to `dwarf-with-dsym` in your build settings
99
115
2. Check that the upload script is running successfully in your build logs
100
116
3. Ensure your App ID and API Token are correct
101
117
4. Verify that the dSYM files match the build that crashed
102
118
119
+
### Debug Mode
120
+
121
+
The upload script runs in the background by default, which means upload logs appear in your system logs rather than in Xcode's build output. If you need to troubleshoot upload issues, enable debug mode by adding `EMBRACE_DEBUG_DSYM=1` to your run script:
In debug mode, the upload runs synchronously and all logs appear directly in the Xcode build output. This slows down the build, so only enable it while troubleshooting.
128
+
103
129
For more troubleshooting tips, see our [FAQ section](/ios/faq#troubleshooting-dsym-upload).
If the Embrace `embrace_symbol_upload.darwin` utility is in a known location you should use the existing binary. If it is non-deterministic or not included alongside the Embrace package itself, then you can download the utility directly.
Copy file name to clipboardExpand all lines: docs/product/settings/app-settings/dsym-symbols.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,6 +18,8 @@ Available artifacts include:
18
18
19
19
Upload iOS/macOS dSYMs and view upload history. Valid dSYMs enable symbolicated crash stacks.
20
20
21
+
Embrace performs symbolication server-side and retroactively. When a dSYM is uploaded after crashes have already been received, Embrace automatically re-symbolicates those older crashes with the newly available symbols. This means crash grouping remains consistent regardless of when the dSYM was uploaded.
22
+
21
23
Developers can use DSYMs to:
22
24
23
25
- Ensure iOS crashes show symbolicated function names and files.
0 commit comments