Hey,I found a different behaviour when generating a binary that uses SPM dependencies in objc and swift.I'm not sure if this is a bug or if it's the intended behaviour.Imagine that I create an Xcode project with a framework called MyLibraryContainer.This framework is closed source, so I will distribute this framework as binary.If I add to my framework a swift library A as dependency with SPM, and distribute a binary of MyLibraryContainer.framework, everything just works, because it seems that the swift library A it's inside MyLibraryContainer.But If I add to my framework an objc library B as dependency with SPM, and distribute a binary of MyLibraryContainer.framework, I get an error while importing MyLibraryContainer `Missing required module B`.To work around this issue, I need to integrate both MyLibraryContainer and B into the new project to avoid the Missing required module B error.Is this a bug, or is there any restrictions with xcode projects that contains SPM objc dependencies?Thanks
Post
Replies
Boosts
Views
Activity
Hey, I found a different behaviour when integrating a XCFramework manually vs with SPM.
When I add the XCFramework directly to Xcode, it recognises it as a XCFramework, and allows me to embedded or not.
When I add a XCFramework via Swift Package Manager to the Xcode project, using a binary target, the Xcode recognises it as a static library, and I can't choose if I want to embedded it or not.
Example: https://github.com/twilio/twilio-video-ios
Is this a bug? Is this related to Xcode or SPM?
Thanks
EDIT: let me give a bit more context.
I'm developing a XCFramework, let's call it MyFramework.
MyFramework depends on TwilioVideo (which is also a XCFramework).
To avoid the problem of nested Frameworks or umbrella Frameworks, I need to integrate TwilioVideo in MyFramework with the option "Do Not Embed".
This way, I will only ship MyFramework, and when someone consume MyFramework, will also need to integrate TwilioVideo.
This is what Apple recommends.
The problem is that when I'm compiling MyFramework integrated with TwilioVideo directly via Xcode or integrated via SPM on Xcode produces different results.
When I integrate TwilioVideo directly on Xcode, it works great, it recognises TwilioVideo as a XCFramework and gives the me option "Do Not Embed", which is the correct behaviour.
When I integrate TwilioVideo on Xcode via SPM, Xcode thinks that TwilioVideo is a static library, which is wrong, and doesn't allow me to choose the option "Do Not Embed".
This means that MyFramework end up being an umbrella framework which is discouraged by Apple.
Check the title "Don’t Create Umbrella Frameworks".
https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/CreationGuidelines.html
Since it produces different behaviours when integrating the same XCFramework directly via Xcode or via SPM, I think this is a bug or some kind of limitation.
Hi,
I have a question regarding the integration of the speech to text library called SFSpeechRecognizer.
I need SFSpeechRecognizer to recognize terms that are not present in the iOS dictionary like medication names, chemistry terms, etc.
I would have to add them, somehow, for SFSpeechRecognizer to be able to recognise them.
Is this possible?
Thanks