I've built a universal xcframework for iOS (arm64) and iOS simulator (arch64, x86_64). This framework has a set of third party dependencies that were provided by a company I'm working with to use their SDK. They provided two sets of .framework files:
The first, for iOS simulator (arch64, x86_64)
The second for iOS (arm64).
Following Apple's [documentation for xcframeworks].
(https://developer.apple.com/documentation/xcode/creating-a-multi-platform-binary-framework-bundle) I created two archives of my project, one for each platform/architecture combination with each set of framework files. I successfully built the xcframework and was able to use it for both iOS and simulator in a test project.
However, when trying to deploy this project to testflight, I get an error telling me that nested bundles aren't allowed:
"Invalid Bundle. The bundle at ... contains disallowed nested bundles"
If I look at the xcframework folder structure, I see two folders within for each architecture/platform build, each with the dependency frameworks inside. This makes sense to me, because we would need each framework at a different time depending on where we are running the project. But, apple says this isn't allowed. My questions are as follows:
How can I make this universal framework with 3rd party dependencies work without creating a nested bundle?
Is this even possible?
Do I need to ask the company that made the dependency framework to give me a universal xcframework?
Post
Replies
Boosts
Views
Activity
I am building an xcframework that depends on a few other frameworks.
I have a header file which includes the header for one of the underlying frameworks. This is needed to make the framework build successfully:
#import <MTBeaconPlus/MTBeaconPlus.h>
I archived 2 different framework builds for device and simulator architectures/platforms. I built the xcframework successfully. However, when I try to use the built framework in a project, I get an error stating:
'MTBeaconPlus/MTBeaconPlus.h' file not found
When I inspect the folder structure of my xcframework, I see the frameworks included for each architecture/platform build, but the headers folder for each isn't there. How do I make sure those are included when building the archives and then when using those archives to build the final xcframework?
I got some beacons from a company who provides an SDK to connect to them. They provided two sets of framework files which the SDK is dependent on. The first set is built for Arm 64, and the second is built for x86.
I am using them to build a framework for a company which says they require frameworks they integrate into their apps to work for both device and simulator. I think this is primarily for convenience during development.
I've run into some walls trying to fulfill these requirements and have some questions about what is possible.
The Beacon manufacturer claims the x86 framework files should work for both simulator and device during development, and that arm64 would be for deployment to the app store. I am unable to get x86 to work during development when my device is plugged in though. What does a framework need to work for both device and simulator?
Is is possible, from strictly arm64 and strictly x86 framework files, to build universal framework files that supports both arm64 and x86? Then from those to build a new universal framework that leverages all of those?
Can this resulting framework not only be used for development on simulator and device, but also be deployed to the app store?
Thank you kindly, for your expertise.