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 806733022

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

@DTS Engineer Is a fix still being worked on ?

I tested this also on Xcode 16.1 Release Candidate (16B40) and it's the same issue.

Here are screenshots. I (and I assume also @paulb777) will be happy to help you figure this out.

Hello, I am facing the same issue "empty dSYM file detected, dSYM was created with an executable with no debug info.".

Can we please have an update? @DTS Engineer

I am able to reproduce this by just creating a new project and changing Debug Information Format to DWarf with dsym file.

Not able to use Crashylitics anymore. The issue started in Xcode 16.

FWIW, in another thread on the same issue, a user suggested going to Build Settings -> Build Options -> Debug Information Format, and changing the selection to DWARF only for both the debug and release build, and then change it back to DWARF with dSYM File. I haven't uploaded a new archive yet to test, but after making that change, the following lines are added to project.pbxproj. Given that DWARF with dSYM was originally selected and these lines were added only after changing to DWARF and back, it seems that XCODE 16+ fails to add those options to the project file

same warning

will these warnings go away ever?

Any updates?

Not able to use Crashylitics anymore

Any updates on this? I am not able to use Crashlytics now either as a result. Thanks

Same issue here, works fine with xcode 15, warnings appear with xcode 16. Any fix has been found?

Ditto - archives compile fine, I get this message when debugging with a device - need debug symbols for Firebase analytics/crashlytics.

This is still a problem with latest XCode and latest Firebase analytics.

Both sides seem to be blaming the other and telling us to file issues with the other side.

Hi @DTS Engineer – Static frameworks containing privacy manifests need to be embedded, so that the privacy manifest resource is copied into the app bundle. When embedding a static framework, Xcode 15 is smart enough to strip out the static archive, replace it with an empty dylib, and copy in the resources. This explains why Paul was able to download the SDK as a static framework, but you saw the same SDK as a dylib within the app bundle.

When Xcode 16 sees this Xcode-generated empty dylib, it looks for the corresponding dSYM file, but it's not there and emits the warning. I believe the fix is within Xcode– when Xcode detects a static framework is being embedded and generates the empty dylib, it also needs to generate an empty dSYM to go along with it.

Hey folks, I wanted to clear up some confusing aspects of this issue:

The main thing this warning is saying is some Firebase SDKs don't have symbols in them, which means stacktrace frames from those SDKs won't be readable in Apple Crash Reporting. The rest of your SDKs and app code will still be visible in Apple Crash Reporting and Crashlytics.

This "Upload Symbols Failed" warning does not impact how your app runs, and does not come from Crashlytics.

Any updates here? Same issue

Would be great to have this fixed one day.

Xcode 16 warning about missing symbols of static framework
 
 
Q