Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create a framework for a swift project with iOS 7+ support?

I have a requirement to create a framework for a shared set of common utilities that we plan to use in multiple iOS projects in our organization. The utility classes are written in swift and the framework needs to support projects in iOS 7 and above. I'm using Xcode 6.1.1.

I tried creating both a 'Cocoa Touch Framework' and a 'Cocoa Touch Static Library' and can't seem to get it working for iOS 7 builds.

With 'Cocoa Touch Framework', I get a warning that 'Embedded dylibs/frameworks only run on iOS 8 or later' and though I can get it to run, it fails during the iTunesconnect step with an error that the project's deployment target must not be less than 8.0 (mine is 7.0).

I tried with 'Cocoa Touch Static Library' as well using the steps given in http://www.raywenderlich.com/65964/create-a-framework-for-ios, but it just does not build with swift files. When I remove all swift files and add Obj-C files, it works properly.

Any help is greatly appreciated. How do I create a framework for a swift project with iOS 7+ support?

Thanks

like image 633
momentsnapper Avatar asked Dec 15 '14 05:12

momentsnapper


People also ask

How do I create a custom framework in Swift?

In the app, select the project from the project navigator, select the Stocktance target, and scroll to Frameworks, Libraries, and Embedded Content. Click on the plus button, click Add Other… and select Add Files… Navigate to the SettingsKit folder and select it. We've added the framework to the project.

How do I add a framework to a Swift project?

So select your iOS App and then select the target you want to link with. Then go to the General tab and click (+) in Frameworks, Libraries, and Embedded Content section, then select your framework and click Add. Link the framework to the app. Voilá!

What is framework in iOS Swift?

In Swift parlance, a module is a compiled group of code distributed together. A framework is one type of module while an app is another. Note: If you want to learn more about frameworks, read What are Frameworks?.


1 Answers

Unfortunately, you cannot. It's one of the more disappointing factors about Swift.

As shown in the documentation, you cannot make a static framework/library with swift and dynamic libraries are only supported in iOS 8+.

The only option I recommend is that you develop an Objective-C static framework for iOS 7 and then begin to use swift when you wish to drop iOS 7 support. It's not the most ideal situation, but because you are able to have mixed languages in a dynamic framework, it means you won't have to waste time rewriting code (unless, of course, you want to).

like image 152
Elliott Minns Avatar answered Oct 13 '22 00:10

Elliott Minns