Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Conversation

cbracken
Copy link
Member

@cbracken cbracken commented Aug 8, 2024

Renames our Flutter framework dSYM to Flutter.framework.dSYM for consistency with all other dSYM bundle names. In iOS release archives, all other dSYM files are:

  • App.framework: App.framework.dSYM
  • Runner.app: Runner.app.dSYM

We continue to archive the dSYM to Flutter.dSYM.zip for backward compatibility with the existing instructions for manual symbolification in docs/Crashes.md and to remain compatible with dart-lang/dart-ci's symbolizer which expects Flutter.dSYM in Symbolizer._symbolizeIosFrames.

Followup to: #54414
Issue: flutter/flutter#116493
Motto: Embrace the yak shave.

Pre-launch Checklist

  • I read the Contributor Guide and followed the process outlined there for submitting PRs.
  • I read the Tree Hygiene wiki page, which explains my responsibilities.
  • I read and followed the Flutter Style Guide and the C++, Objective-C, Java style guides.
  • I listed at least one issue that this PR fixes in the description above.
  • I added new tests to check the change I am making or feature I am adding, or the PR is test-exempt. See testing the engine for instructions on writing and running engine tests.
  • I updated/added relevant documentation (doc comments with ///).
  • I signed the CLA.
  • All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

@cbracken cbracken requested review from jmagman and zanderso August 8, 2024 23:57
Renames our Flutter framework dSYM to `Flutter.framework.dSYM` for
consistency with all other dSYM bundle names. In iOS release archives,
all other dSYM files are:

* `App.framework`: `App.framework.dSYM`
* `Runner.app`: `Runner.app.dSYM`

We continue to archive the dSYM to `Flutter.dSYM.zip` for backward
compatibility with the existing instructions for manual symbolification
in `docs/Crashes.md` and to remain compatible with dart-lang/dart-ci's
symbolizer which expects `Flutter.dSYM` in
[`Symbolizer._symbolizeIosFrames`][symbolizer].

Issue: flutter/flutter#116493

symbolizer: https://github.com/dart-lang/dart_ci/blob/e9fd9884a2c76184f4d20eb8a1cb48f92ec63ab5/github-label-notifier/symbolizer/lib/symbolizer.dart#L530
@cbracken cbracken force-pushed the flutter-framework-dsym branch from 9bd13ee to 2670315 Compare August 9, 2024 00:09
Copy link
Contributor

@christopherfujino christopherfujino left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@cbracken cbracken added the autosubmit Merge PR when tree becomes green via auto submit App label Aug 9, 2024
@auto-submit auto-submit bot merged commit e5a6030 into flutter:main Aug 9, 2024
27 checks passed
@cbracken cbracken deleted the flutter-framework-dsym branch August 9, 2024 00:51
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Aug 9, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Aug 9, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Aug 9, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Aug 9, 2024
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Aug 9, 2024
auto-submit bot pushed a commit to flutter/flutter that referenced this pull request Aug 9, 2024
…153143)

flutter/engine@0520889...e50fd30

2024-08-09 [email protected] Roll Skia from 2eee5f248886 to bf9cf9b8fe9d (1 revision) (flutter/engine#54462)
2024-08-09 [email protected] Roll Skia from 5e8d9842cefa to 2eee5f248886 (1 revision) (flutter/engine#54461)
2024-08-09 [email protected] Roll Dart SDK from ff0404c72fc5 to 9222e4c96f4d (1 revision) (flutter/engine#54460)
2024-08-09 [email protected] Roll Skia from 4cff580721cf to 5e8d9842cefa (1 revision) (flutter/engine#54459)
2024-08-09 [email protected] [iOS] Rename Flutter.dSYM to Flutter.framework.dSYM (flutter/engine#54458)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC [email protected],[email protected],[email protected] on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
cbracken added a commit to cbracken/flutter that referenced this pull request Aug 10, 2024
As of Xcode 16, App Store validation now requires that apps uploaded to
the App store bundle dSYM debug information bundles for each Framework
they embed.

dSYM bundles are packaged in the Flutter.xcframework shipped in the
`ios-release` tools archive as of engine patches:
* flutter/engine#54414
* flutter/engine#54458

This copies the Flutter.framework.dSYM bundle from the tools cache to
the app archive produced by `flutter build ipa`.

Issue: flutter#116493
cbracken added a commit to cbracken/flutter that referenced this pull request Aug 10, 2024
As of Xcode 16, App Store validation now requires that apps uploaded to
the App store bundle dSYM debug information bundles for each Framework
they embed.

dSYM bundles are packaged in the Flutter.xcframework shipped in the
`ios-release` tools archive as of engine patches:
* flutter/engine#54414
* flutter/engine#54458

This copies the Flutter.framework.dSYM bundle from the tools cache to
the app archive produced by `flutter build ipa`.

Issue: flutter#116493
cbracken added a commit to cbracken/flutter that referenced this pull request Aug 10, 2024
As of Xcode 16, App Store validation now requires that apps uploaded to
the App store bundle dSYM debug information bundles for each Framework
they embed.

dSYM bundles are packaged in the Flutter.xcframework shipped in the
`ios-release` tools archive as of engine patches:
* flutter/engine#54414
* flutter/engine#54458

This copies the Flutter.framework.dSYM bundle from the tools cache to
the app archive produced by `flutter build ipa`.

Issue: flutter#116493
auto-submit bot pushed a commit that referenced this pull request Aug 10, 2024
As of the following three patches, we now bundle Flutter.framework.dSYM as part of Flutter.xcframework and bundle them in the .xcarchive bundles produced by `flutter build ipa` / Xcode Product > Archive for upload to the iOS App Store.

* #54414
* #54458
* flutter/flutter#153215

The .dSYM bundle is now available both in the uploaded .xcarchive and in the xcframework in Flutter's internal artifact cache. For developers with CI toolchains that do additional manual handling or local archiving of .dSYMs, the dSYMs no longer need to be downloaded from cloud storage as previously detailed in `docs/Crashes.md`, but can instead be copied up from the appropriate dSYM subdirectory in the framework cache:

* `flutter/bin/cache/artifacts/engine/ios-release/Flutter.xcframework`

Issue: flutter/flutter#116493
Credo: [Embrace the yak shave](https://suno.com/song/37cb7c43-85ad-40f2-87e6-9aec7baa0419)

[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
auto-submit bot pushed a commit to flutter/flutter that referenced this pull request Aug 10, 2024
As of Xcode 16, App Store validation now requires that apps uploaded to the App store bundle dSYM debug information bundles for each Framework they embed.

dSYM bundles are packaged in the Flutter.xcframework shipped in the `ios-release` tools archive as of engine patches:
* flutter/engine#54414
* flutter/engine#54458

This copies the Flutter.framework.dSYM bundle from the tools cache to the app archive produced by `flutter build ipa`.

Issue: #116493
jmagman pushed a commit to flutteractionsbot/engine that referenced this pull request Aug 12, 2024
Renames our Flutter framework dSYM to `Flutter.framework.dSYM` for consistency with all other dSYM bundle names. In iOS release archives, all other dSYM files are:

* `App.framework`: `App.framework.dSYM`
* `Runner.app`: `Runner.app.dSYM`

We continue to archive the dSYM to `Flutter.dSYM.zip` for backward compatibility with the existing instructions for manual symbolification in `docs/Crashes.md` and to remain compatible with dart-lang/dart-ci's symbolizer which expects `Flutter.dSYM` in [`Symbolizer._symbolizeIosFrames`][symbolizer].

Followup to: flutter#54414
Issue: flutter/flutter#116493
Motto: [Embrace the yak shave][yak_shave].

[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
flutteractionsbot pushed a commit to flutteractionsbot/flutter that referenced this pull request Aug 12, 2024
As of Xcode 16, App Store validation now requires that apps uploaded to the App store bundle dSYM debug information bundles for each Framework they embed.

dSYM bundles are packaged in the Flutter.xcframework shipped in the `ios-release` tools archive as of engine patches:
* flutter/engine#54414
* flutter/engine#54458

This copies the Flutter.framework.dSYM bundle from the tools cache to the app archive produced by `flutter build ipa`.

Issue: flutter#116493
auto-submit bot pushed a commit that referenced this pull request Aug 13, 2024
This pull request is created by [automatic cherry pick workflow](https://github.com/flutter/flutter/blob/main/docs/releases/Flutter-Cherrypick-Process.md#automatically-creates-a-cherry-pick-request)
Please fill in the form below, and a flutter domain expert will evaluate this cherry pick request.

### Issue Link:
What is the link to the issue this cherry-pick is addressing?

flutter/flutter#116493

Note this includes two PRs:
#54414
#54458

### Changelog Description:
Bundle iOS framework debugging symbols (`Flutter.framework.dSYM`) in `Flutter.xcframework` in iOS release builds. This eliminates the need for manual download/bundling of Flutter debug symbols for release build crash log symbolication. As of Xcode 16, these symbols are required to be bundled with App Store archives.

### Impact Description:
Without these bundled symbols, iOS App Store validation fails for Flutter apps under Xcode 16.

### Workaround:
Is there a workaround for this issue?

Users can follow the steps described in [docs/Crashes.md](https://github.com/flutter/engine/blob/main/docs/Crashes.md) to manually locate the engine SHA used in their Flutter app, download the Flutter.dSYM archive, and manually copy it into their app archive prior to App Store validation. This is very manual process with room for a lot of error. This process is not at all obvious or well-documented.

### Risk:
What is the risk level of this cherry-pick?

In the case where dSYM extraction fails, we'll know immediately since the build will fail. dSYMs can be verified using the steps below.

### Test Coverage:
Are you confident that your fix is well-tested by automated tests?

In this case the build itself will fail if dSYM extraction fails. Testing of bundling is covered in framework tool tests.

### Validation Steps:
What are the steps to validate that this fix works?

`artifacts.zip` can be checked at any commit on or after `c11fe483947c95553610ab59210af643f031f5f4`. For example https://storage.googleapis.com/flutter_infra_release/flutter/c11fe483947c95553610ab59210af643f031f5f4/ios-release/artifacts.zip

Verify that Flutter.xcframework in this archive contains `ios-arm64/dSYMs/Flutter.framework.dSYM`.
DBowen33 pushed a commit to DBowen33/flutter that referenced this pull request Aug 16, 2024
…lutter#153143)

flutter/engine@0520889...e50fd30

2024-08-09 [email protected] Roll Skia from 2eee5f248886 to bf9cf9b8fe9d (1 revision) (flutter/engine#54462)
2024-08-09 [email protected] Roll Skia from 5e8d9842cefa to 2eee5f248886 (1 revision) (flutter/engine#54461)
2024-08-09 [email protected] Roll Dart SDK from ff0404c72fc5 to 9222e4c96f4d (1 revision) (flutter/engine#54460)
2024-08-09 [email protected] Roll Skia from 4cff580721cf to 5e8d9842cefa (1 revision) (flutter/engine#54459)
2024-08-09 [email protected] [iOS] Rename Flutter.dSYM to Flutter.framework.dSYM (flutter/engine#54458)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC [email protected],[email protected],[email protected] on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
DBowen33 pushed a commit to DBowen33/flutter that referenced this pull request Aug 16, 2024
As of Xcode 16, App Store validation now requires that apps uploaded to the App store bundle dSYM debug information bundles for each Framework they embed.

dSYM bundles are packaged in the Flutter.xcframework shipped in the `ios-release` tools archive as of engine patches:
* flutter/engine#54414
* flutter/engine#54458

This copies the Flutter.framework.dSYM bundle from the tools cache to the app archive produced by `flutter build ipa`.

Issue: flutter#116493
Buchimi pushed a commit to Buchimi/flutter that referenced this pull request Sep 2, 2024
…lutter#153143)

flutter/engine@0520889...e50fd30

2024-08-09 [email protected] Roll Skia from 2eee5f248886 to bf9cf9b8fe9d (1 revision) (flutter/engine#54462)
2024-08-09 [email protected] Roll Skia from 5e8d9842cefa to 2eee5f248886 (1 revision) (flutter/engine#54461)
2024-08-09 [email protected] Roll Dart SDK from ff0404c72fc5 to 9222e4c96f4d (1 revision) (flutter/engine#54460)
2024-08-09 [email protected] Roll Skia from 4cff580721cf to 5e8d9842cefa (1 revision) (flutter/engine#54459)
2024-08-09 [email protected] [iOS] Rename Flutter.dSYM to Flutter.framework.dSYM (flutter/engine#54458)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-engine-flutter-autoroll
Please CC [email protected],[email protected],[email protected] on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Buchimi pushed a commit to Buchimi/flutter that referenced this pull request Sep 2, 2024
As of Xcode 16, App Store validation now requires that apps uploaded to the App store bundle dSYM debug information bundles for each Framework they embed.

dSYM bundles are packaged in the Flutter.xcframework shipped in the `ios-release` tools archive as of engine patches:
* flutter/engine#54414
* flutter/engine#54458

This copies the Flutter.framework.dSYM bundle from the tools cache to the app archive produced by `flutter build ipa`.

Issue: flutter#116493
moffatman pushed a commit to moffatman/flutter that referenced this pull request Oct 30, 2024
As of Xcode 16, App Store validation now requires that apps uploaded to the App store bundle dSYM debug information bundles for each Framework they embed.

dSYM bundles are packaged in the Flutter.xcframework shipped in the `ios-release` tools archive as of engine patches:
* flutter/engine#54414
* flutter/engine#54458

This copies the Flutter.framework.dSYM bundle from the tools cache to the app archive produced by `flutter build ipa`.

Issue: flutter#116493
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
autosubmit Merge PR when tree becomes green via auto submit App
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants