How to create an umbrella framework in iOS SDK?
Solution 1:
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/mac/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:-
1) 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.
2) Create a Static iOS Framework
and change the Target-> Build Settings-> Architectures-> Architectures
settings to Standard architectures. This will create the framework with all the Standard Architectures.
3) Adjust Public Header files in Target-> Build Phase-> Copy Headers
. We can set the header file visibility here.
4) 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.
5) We may also need to add Bundle Resources in Target-> Build Phase-> Copy Bundle Resources
if we need.
6) We may also need to add -ObjC
to Target-> 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.
7) Add Copy File
using Target-> Build Phases-> +-> New Copy File Build Phase
.
8) Change it’s Destination to Frameworks
and add SubFramework.framework there. This will copy SubFramework to Umbrella Framework.
9) For the demo I Added two demo methods in UmbrellaFramework class. One to demonstrating umbrella framework method call and one for calling subFramework method.
10) Select iOS Device
and Archive the UmbrellaFramework project from Menu->Product->Archive
. This will create our umbrella framework and that’s all.
11) Now it’s time to create a new demo project, and link it with UmbrellaFramework.
12) Just import UmbrellaFramework header and call the two methods. It will show the Hello messages in log window.
Solution 2:
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