Making a Swift framework should not be laborious. This tutorial will allow you to making a common framework for advanced tasks.
What’s a framework?
A framework is a hierarchical listing that encapsulates shared assets, similar to a dynamic shared library, nib recordsdata, picture recordsdata, localized strings, header recordsdata, and reference documentation in a single bundle.
So in a nutshell, a framework is a extremely reusable element on your apps.
Methods to make it?
There’s an article about Xcode conventions which is able to allow you to set up your tasks, it’s best to test that first, if you happen to haven’t earlier than.
Conventional manner
There’s a conventional approach to make a framework in Xcode. I’m going to create a shared framework for all of the apple platforms (iOS, macOS, tvOS, watchOS), which goes to be able to logging issues to the usual console.
Let’s make the venture:
- Create a brand new venture utilizing one of many framework targets
- Observe the directions fill & identify all of the fields
- Add all the opposite platform framework targets
- Rename all targets in keeping with the platform names
Now in Finder:
- Create a Sources folder and transfer all of the Swift and header recordsdata there
- Create an Belongings folder with platforms subfolders
- Transfer all of the Data.plist recordsdata into the proper platfrom subdirectory
- Create a Checks folder and transfer take a look at recordsdata there
Again to Xcode:
- Take away each group and add the brand new Folders from Finder
- Verify that each goal has the proper recordsdata (framework & checks)
- Contained in the header file, change UIKit depencency with Basis
The objective is to realize a construction considerably like this:

Undertaking settings:
- Choose the proper plist recordsdata for the targets
- Set your bundle identifiers (use my conventions)
- Setup platform variations (recommendation: assist 1 older model too)
- Setup the plist recordsdata for the checks from the construct settings pane
- Set the product identify (Console) in your framework construct settings
- Verify your construct phases and add the general public header file.
Scheme settings:
- Go to the scheme settings and setup shared schemes for the frameworks
- Collect protection information if you happen to want it
- Write your framework you need to use Swift “macros” to detect platforms
NOTE: There’s a flag in Xcode to permit app extension API solely, if you’re embedding your framework inside an software extension it must be enabled!
Congratulations, now you could have your model new Swift framework made within the conventional manner. Let’s proceed with a neat trick.
Common cross platform framework
It’s doable to create a multiplatform single scheme Xcode venture with cross platform assist for each platform, but it surely’s not beneficial as a result of it’s a hack. Nevertheless a number of open supply libraries do the identical manner, so why shouldn’t we.
- Delete all of the targets, schemes, besides macOS!!!
- Rename the remaining goal, scheme (we don’t want platform names)
- Use the venture configuration file, set the xcconfig on the venture
- Delete Data.plist recordsdata, use one for the framework and one for the checks
- Rename bundle identifier (we don’t want platform names there too)
WARN: States will be combined up if you’re constructing for a number of platforms, nonetheless it is a good clear approach to assist each platforms, with out duplications.
Methods to use a Swift framework?
Embedding your framework is essentially the most simple factor to do. You possibly can merely drag the framework venture to a different Xcode venture, the one factor left to do is to the embedded the framework into the applying. You possibly can go to the embedded binaries part inside the final venture data tab and add the framework as a dependency.
Swift Bundle Supervisor
With SPM, you must make a Bundle.swift file first, then you definitely’ll be capable to construct your targets with the swift construct command. Now that Xcode helps the Swift Bundle Supervisor, it’s very easy to combine third celebration frameworks through the use of it.
You possibly can obtain the ultimate framework examples from GitHub.
Just remember to don’t miss out my deep dive into swift frameworks put up.

