Image sets from Frameworks broken on Xcode 13? (Store only bug)

Hi, this is the scenario:

I have a framework (my own pod) that defines image sets as assets. They are exported as a bundle in the framework, and images are read inside by the framework itself.

  • Prior to Xcode 13.0: all works flawlessly.
  • In Xcode 13.0, while debugging on simulator or real hw: all works flawlessly.
  • In a Testflight build from Xcode 13.0: images from that framework's bundle seems nil (dot not appear in app)

Things to consider:

  • The size between the archive builds on Xcode 13 and 12.5 have the same size.
  • The archive builds on Xcode 13 and 12.5 do show the same Asset.car within the framework's bundle. Image filenames do appear listed, case sensitively correct.
  • The framework's bundle also uses other non image files (.strings, .storyboards) with no problem. Issue affects image sets from assets (.svg, .pdf, .png, all file extensions effected)

I could provide a demo project to repro, but the attachment in the forum doesn't allow it :S

Accepted Reply

Is your bundle's name the same as the framework's name? If so, did you try to change the bundle's name to something different?

  • After some additional investigation, turning off Manage Version and Build Number during export fixed it for me. If you upload to TestFlight from the command line, you might need to set manageAppVersionAndBuildNumber to false in exportOptions.plist. I expected that this option will only affect the final app executable and not embedded frameworks.

  • Actually both things do work:

    Having different names for framework and bundle -> images show up.

    Or

    Disabling "Manager Version and Build Number" -> images show up.

    Thanks to both, end of the headache. Gonna update here and in the feedback assistant.

  • For me, the different name of the bundle didn't work for binary XCFramework. However, turning off Manage Version and Build Number worked for both binary framework and a framework built from sources.

Add a Comment

Replies

Have you tested your app locally with app thinning applied to see if it reproduces without the App Store? We have instructions for how to do that in Testing a Release Build. We'd like to see your sample project as a bug report, which you can file using Feedback Assistant. Include the results of the tests done by testing app thinning without the App Store. Please share the FB number here so I can locate your report.

Add a Comment

Is your bundle's name the same as the framework's name? If so, did you try to change the bundle's name to something different?

  • After some additional investigation, turning off Manage Version and Build Number during export fixed it for me. If you upload to TestFlight from the command line, you might need to set manageAppVersionAndBuildNumber to false in exportOptions.plist. I expected that this option will only affect the final app executable and not embedded frameworks.

  • Actually both things do work:

    Having different names for framework and bundle -> images show up.

    Or

    Disabling "Manager Version and Build Number" -> images show up.

    Thanks to both, end of the headache. Gonna update here and in the feedback assistant.

  • For me, the different name of the bundle didn't work for binary XCFramework. However, turning off Manage Version and Build Number worked for both binary framework and a framework built from sources.

Add a Comment

Found two possible workarounds to this problem:

  • Having different names for framework and bundle -> images show up
  • Disabling "Manager Version and Build Number" -> images show up

Best solution for anyone facing this would be, to edit in your podspec:

.resource_bundles = { 'Have unique bundle name here, not matching framework's' => [ ... list of paths ]

Ear pulling to whoever broke this though.

Same issue here...Thanks a lot

我也遇到了一样的问题,头大