How to create an umbrella framework in iOS SDK?
To create a Swift based Umbrella Framework that contains a Sub-Framework you can follow the step-by-step guide written down here: Umbrella framework
We all know that creating umbrella framework is highly discouraged by Apple. But apple also says it’s possible via Xcode. https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/CreationGuidelines.html#//apple_ref/doc/uid/20002254-BAJHGGGA
I achieved creating umbrella framework via these simple approach on Xcode 5.1. We just need to do take care of some special configuration to linking sub-framework to umbrella framework. Here was my approach:-
- Install real
Static iOS Framework
on Xcode 5.1 from the method described here:- https://github.com/kstenerud/iOS-Universal-Framework.
Now the ‘Static iOS Framework’ can be created using the new option in Xcode.
- Create a
Static iOS Framework
and change theTarget-> Build Settings-> Architectures-> Architectures
settings to Standard architectures. This will create the framework with all the Standard Architectures.
- Adjust Public Header files in
Target-> Build Phase-> Copy Headers
. We can set the header file visibility here.
- Link SubFramework to UmbrellaFramework in
Target->Build Phase -> Link Binary With Libraries
. We may also need to link other standard framework depending on our use.
- We may also need to add Bundle Resources in
Target-> Build Phase-> Copy Bundle Resources
if we need.
- We may also need to add
-ObjC
toTarget-> Build Settings->Linking-> Other Linker Flag
, as we may need to load a large subFramework where there are many categories to load or need to load additional frameworks also.
- Add
Copy File
usingTarget-> Build Phases-> +-> New Copy File Build Phase
.
- Change it’s Destination to
Frameworks
and add SubFramework.framework there. This will copy SubFramework to Umbrella Framework.
- For the demo I Added two demo methods in UmbrellaFramework class. One to demonstrating umbrella framework method call and one for calling subFramework method.
- Select
iOS Device
and Archive the UmbrellaFramework project fromMenu->Product->Archive
. This will create our umbrella framework and that’s all.
- Now it’s time to create a new demo project, and link it with UmbrellaFramework.
- Just import UmbrellaFramework header and call the two methods. It will show the Hello messages in log window.