Xcode 16 warning about missing symbols of static framework

I work on an SDK, and one of the ways we distribute it is as a pre-compiled static XCFramework.

As far as I know, it’s the nature of a static framework to not contain symbols since the framework will be embedded in the final app binary, and the symbols should then be generated.

However, when testing the "Validate" function of the Xcode 16 deployment process, our users are receiving a warning that says the framework does not contain symbols.

Is my assumption about static frameworks and symbols incorrect? Could this be a bug in Xcode 16? Should we modify something in our framework to inform Xcode that symbols are not needed?

Answered by DTS Engineer in 800860022

As far as I know, it’s the nature of a static framework to not contain symbols since the framework will be embedded in the final app binary, and the symbols should then be generated.

The heart of a static framework is a static library, which essentially is a bag of unlinked object files. It's your choice whether or not to include symbols, but if you do, they will be part of the object files, and not a dSYM. When the final app links a static library, this information is then extracted and combined into the dSYM file for the app as if those object files were their own.

However, when testing the "Validate" function of the Xcode 16 deployment process, our users are receiving a warning that says the framework does not contain symbols.

Can you be specific about the exact text in the warning message? A screenshot of the message is welcome too.

— Ed Ford,  DTS Engineer

Pretty much the same issue here

. Ensure that the archive's dSYM folder includes a DWARF file for EzCCS.app with the expected UUIDs

Hello same issue here, do we have a solution for this?

This is a new warning in Xcode 16 where if you're missing a dSYM, Xcode lets you know in case you aren't expecting that — this is to reduce scenarios where you won't are able to fully symbolicating frames coming from your app's code in crash reports. In some cases, you may not have a dSYM, such as a closed source library from a vendor, and in those cases, the warning is safe to discard.

For those developing or using libraries that are statically linked, I was not able to reproduce this warning using either the example XCFramework attached in the bug reports noted in this thread, or by doing some simple testing with libraries that I know are popular in the iOS developer community and also statically linked. For the purposes of these tests, I'm creating a brand new Xcode project, adding the library through a Swift package, and making at least function call into the library so that it doesn't appear as dead code that can be eliminated as a release optimization. For these tests, the Xcode archive contains only the dSYM for the app, as the library code coming in from the XCFramework is merged into the main app's binary at link time, rather than it remaining as a separate dynamic library in the app, which would have a separate dSYM file. If you have a scenario with a straight forward test project set up using a statically linked library in an XCFramework that still unexpectedly gives you this warning about a missing dSYM file when uploaded, I'd like to see that project — please feel free to share a link to it so I can look at it further.

I also did some tests with some libraries popular among the iOS community that are dynamically linked and closed source (with no dSYM provided), and in those circumstances, I did receive the warning, but that warning is expected in that situation.

—Ed Ford,  DTS Engineer

Xcode 16 warning about missing symbols of static framework
 
 
Q