Skip to content

Commit 98419b1

Browse files
authored
Merge pull request #230 from flashcatcloud/docs/flutter-ios-symbol-reason
docs(rum): correct why iOS Dart stacks are not symbolicated
2 parents e3c2039 + 6088e9c commit 98419b1

6 files changed

Lines changed: 18 additions & 6 deletions

File tree

en/rum/error-tracking/source-mapping.mdx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,9 @@ When a Flutter app is built with `--obfuscate`, symbols in Dart exception stacks
428428
</Steps>
429429

430430
<Warning>
431-
**Dart stack symbolication is not yet supported on iOS.** The `.symbols` files Flutter generates for iOS contain no build id ([flutter/flutter#138182](https://github.com/flutter/flutter/issues/138182)) and cannot be matched to a specific build, so do not enable `--obfuscate` for iOS builds — otherwise Dart stacks become unrecoverable. iOS native crashes (Objective-C / Swift / C / C++) are unaffected: upload dSYMs to symbolicate them, the same as a standalone iOS app.
431+
**Dart stacks cannot be symbolicated on iOS yet.** The symbol file Flutter produces for Apple targets is a Mach-O, and the platform currently parses only the ELF format used on Android, so an iOS `.symbols` upload is rejected. iOS native crashes (Objective-C / Swift / C / C++) are unaffected: upload dSYMs to symbolicate them, the same as a standalone iOS app.
432+
433+
If you ship both iOS and Android, you can still enable `--obfuscate`: Android Dart stacks resolve normally while iOS Dart stacks stay obfuscated. If readable iOS stacks matter more, leave `--obfuscate` off for that platform's build.
432434
</Warning>
433435

434436
<Note>

en/rum/sdk/flutter/advanced-config.mdx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,9 @@ To resolve crash and error stacks back to source locations, you need to upload s
128128
| Android Native | mapping files | R8 / ProGuard output |
129129

130130
<Warning>
131-
**Dart stacks cannot be symbolicated on iOS yet.** The `.symbols` file Flutter produces for iOS carries no build id ([flutter/flutter#138182](https://github.com/flutter/flutter/issues/138182)), so it cannot be matched to a build and cannot be uploaded. Do not enable `--obfuscate` for iOS builds, or your Dart stacks will be unrecoverable. iOS native crashes are unaffected — upload dSYMs to symbolicate them.
131+
**Dart stacks cannot be symbolicated on iOS yet.** The symbol file Flutter produces for Apple targets is a Mach-O, and the platform currently parses only the ELF format used on Android, so an iOS `.symbols` upload is rejected. iOS native crashes are unaffected — upload dSYMs to symbolicate them.
132+
133+
If you ship both iOS and Android, you can still enable `--obfuscate`: Android Dart stacks resolve normally while iOS Dart stacks stay obfuscated. If readable iOS stacks matter more, leave `--obfuscate` off for that platform's build.
132134
</Warning>
133135

134136
Use the FlashCat CLI to upload symbol files:

en/rum/sdk/flutter/compatible.mdx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,9 @@ Flutter crash stacks can contain both Dart frames and native (iOS / Android) fra
6767
| Android Native | mapping files |
6868

6969
<Warning>
70-
**Dart stacks cannot be symbolicated on iOS yet.** The `.symbols` file Flutter produces for iOS carries no build id ([flutter/flutter#138182](https://github.com/flutter/flutter/issues/138182)), so it cannot be matched to a build and cannot be uploaded. Do not enable `--obfuscate` for iOS builds, or your Dart stacks will be unrecoverable. iOS native crashes are unaffected — upload dSYMs to symbolicate them.
70+
**Dart stacks cannot be symbolicated on iOS yet.** The symbol file Flutter produces for Apple targets is a Mach-O, and the platform currently parses only the ELF format used on Android, so an iOS `.symbols` upload is rejected. iOS native crashes are unaffected — upload dSYMs to symbolicate them.
71+
72+
If you ship both iOS and Android, you can still enable `--obfuscate`: Android Dart stacks resolve normally while iOS Dart stacks stay obfuscated. If readable iOS stacks matter more, leave `--obfuscate` off for that platform's build.
7173
</Warning>
7274

7375
<Tip>

zh/rum/error-tracking/source-mapping.mdx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,9 @@ Flutter 应用使用 `--obfuscate` 混淆构建后,Dart 异常堆栈中的符
429429
</Steps>
430430

431431
<Warning>
432-
**iOS 的 Dart 堆栈暂不支持符号化。** Flutter 为 iOS 生成的 `.symbols` 不包含 build id([flutter/flutter#138182](https://github.com/flutter/flutter/issues/138182)),无法与具体构建对应,因此 iOS 构建请勿开启 `--obfuscate`,否则 Dart 堆栈将无法还原。iOS 原生崩溃(Objective-C / Swift / C / C++)不受影响,与原生 iOS 应用一样上传 dSYM 即可符号化。
432+
**iOS 的 Dart 堆栈暂不支持符号化。** Flutter 为 Apple 平台生成的符号文件是 Mach-O 格式,平台当前只能解析 Android 侧的 ELF 格式,因此 iOS 的 `.symbols` 上传会被拒绝。iOS 原生崩溃(Objective-C / Swift / C / C++)不受影响,与原生 iOS 应用一样上传 dSYM 即可符号化。
433+
434+
如果你的应用同时发布 iOS 和 Android,`--obfuscate` 仍可开启:Android 的 Dart 堆栈会正常还原,iOS 的 Dart 堆栈则保持混淆状态。若 iOS 的可读堆栈更重要,则该端构建时不要开启 `--obfuscate`
433435
</Warning>
434436

435437
<Note>

zh/rum/sdk/flutter/advanced-config.mdx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,9 @@ final webViewController = WebViewController()
128128
| Android Native | mapping 文件 | R8 / ProGuard 产物 |
129129

130130
<Warning>
131-
**iOS 的 Dart 堆栈暂不支持符号化。** Flutter 为 iOS 生成的 `.symbols` 不包含 build id([flutter/flutter#138182](https://github.com/flutter/flutter/issues/138182)),无法与具体构建对应,因此无法上传使用。iOS 构建请勿开启 `--obfuscate`,否则 Dart 堆栈将无法还原。iOS 原生崩溃不受影响,上传 dSYM 即可符号化。
131+
**iOS 的 Dart 堆栈暂不支持符号化。** Flutter 为 Apple 平台生成的符号文件是 Mach-O 格式,平台当前只能解析 Android 侧的 ELF 格式,因此 iOS 的 `.symbols` 上传会被拒绝。iOS 原生崩溃不受影响,上传 dSYM 即可符号化。
132+
133+
如果你的应用同时发布 iOS 和 Android,`--obfuscate` 仍可开启:Android 的 Dart 堆栈会正常还原,iOS 的 Dart 堆栈则保持混淆状态。若 iOS 的可读堆栈更重要,则该端构建时不要开启 `--obfuscate`
132134
</Warning>
133135

134136
使用 FlashCat CLI 上传符号文件:

zh/rum/sdk/flutter/compatible.mdx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,9 @@ Flutter 崩溃栈可能同时包含 Dart 帧与原生(iOS / Android)帧。
6767
| Android Native | mapping 文件 |
6868

6969
<Warning>
70-
**iOS 的 Dart 堆栈暂不支持符号化。** Flutter 为 iOS 生成的 `.symbols` 不包含 build id([flutter/flutter#138182](https://github.com/flutter/flutter/issues/138182)),无法与具体构建对应,因此无法上传使用。iOS 构建请勿开启 `--obfuscate`,否则 Dart 堆栈将无法还原。iOS 原生崩溃不受影响,上传 dSYM 即可符号化。
70+
**iOS 的 Dart 堆栈暂不支持符号化。** Flutter 为 Apple 平台生成的符号文件是 Mach-O 格式,平台当前只能解析 Android 侧的 ELF 格式,因此 iOS 的 `.symbols` 上传会被拒绝。iOS 原生崩溃不受影响,上传 dSYM 即可符号化。
71+
72+
如果你的应用同时发布 iOS 和 Android,`--obfuscate` 仍可开启:Android 的 Dart 堆栈会正常还原,iOS 的 Dart 堆栈则保持混淆状态。若 iOS 的可读堆栈更重要,则该端构建时不要开启 `--obfuscate`
7173
</Warning>
7274

7375
<Tip>

0 commit comments

Comments
 (0)