Skip to content
This repository has been archived by the owner on Aug 8, 2023. It is now read-only.

[build] Package bcsymbolmap files; cleanup packaging script #9613

Merged
merged 2 commits into from
Jul 26, 2017

Conversation

friedbunny
Copy link
Contributor

@friedbunny friedbunny commented Jul 26, 2017

.bcsymbolmap files are text files with a list of symbols available in our framework, used to map recompiled bitcode to named symbols for crash reporting. These files are generated in the build process, one per device architecture, and share UUIDs with those slices/dSYMs.

These bcsymbolmap files can be included during the app archiving process and uploaded to Apple.

08b963e packages these files alongside our dynamic framework. When uploaded with an app archive, this should theoretically help eliminate the pesky __hidden symbols issue (#8463).

Notes

  • Documentation on bcsymbolmap is rare and mostly anecdotal, as one expects of an Apple build process detail.
  • There are rumors that Xcode 9 will stop producing them.
  • bcsymbolmaps are only generated for dynamic frameworks, similar to dSYMs.
  • Many framework vendors don’t bother bundling these, but Realm and PSPDFKit do.
  • These files are large: 2.7 MB uncompressed, ~18K lines — see this example.
  • Like most debug ephemera, they aren’t shipped in the final end-user app.

Also did some more Fabric cleanup

612a1e8 follows up on #9264 and removes the Fabric-specific static framework + bundle mode, first introduced in #4232, later updated in #4783.

/cc @1ec5 @boundsj @fabian-guerra

This was a faux framework once required by Fabric.
@friedbunny friedbunny added build iOS Mapbox Maps SDK for iOS labels Jul 26, 2017
@friedbunny friedbunny added this to the ios-v3.6.1 milestone Jul 26, 2017
@friedbunny friedbunny self-assigned this Jul 26, 2017
@friedbunny friedbunny requested review from boundsj and 1ec5 July 26, 2017 04:46
@friedbunny
Copy link
Contributor Author

friedbunny commented Jul 26, 2017

Looking more closely at strip-frameworks.sh, it assumes the bcsymbolmap files are in the framework folder itself, not just packaged alongside. We can change this PR to put them inside the framework, but I want to reconfirm that these files aren’t shipped with apps (or, we should find a foolproof way to delete them).

Update: they’ll be shipped if you don’t move/delete them from the framework.

Copy link
Contributor

@1ec5 1ec5 left a comment

Choose a reason for hiding this comment

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

Worth a changelog entry?

@friedbunny
Copy link
Contributor Author

friedbunny commented Jul 26, 2017

Turns out that Carthage won’t copy in bcsymbolmaps from precompiled binaries (only frameworks it builds itself), so that’s a bummer. Still, including these files in the distribution has no downside and is potentially valuable, if the developer chooses to take advantage of them and/or if package manager support improves.

Carthage/Carthage#684 and CocoaPods/CocoaPods#6536 show the way forward, if someone wanted to implement support.

@friedbunny friedbunny merged commit 82c2d4b into release-ios-v3.6.0-android-v5.1.0 Jul 26, 2017
@friedbunny friedbunny deleted the fb-bcsymbolmap branch July 26, 2017 20:13
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
build iOS Mapbox Maps SDK for iOS
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants