Making a Swift framework should not be laborious. This tutorial will assist you to making a common framework for complicated initiatives.
What’s a framework?
A framework is a hierarchical listing that encapsulates shared assets, equivalent to a dynamic shared library, nib information, picture information, localized strings, header information, and reference documentation in a single package deal.
So in a nutshell, a framework is a extremely reusable part on your apps.
Tips on how to make it?
There may be an article about Xcode conventions which can assist you to set up your initiatives, you must examine that first, should you haven’t earlier than.
Conventional method
There’s a conventional method 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
- Comply with the directions fill & identify all of the fields
- Add all the opposite platform framework targets
- Rename all targets based on the platform names
Now in Finder:
- Create a Sources folder and transfer all of the Swift and header information there
- Create an Property folder with platforms subfolders
- Transfer all of the Data.plist information into the proper platfrom subdirectory
- Create a Assessments folder and transfer check information there
Again to Xcode:
- Take away each group and add the brand new Folders from Finder
- Examine that each goal has the proper information (framework & checks)
- Contained in the header file, exchange UIKit depencency with Basis
The purpose is to attain a construction considerably like this:
Challenge settings:
- Choose the proper plist information for the targets
- Set your bundle identifiers (use my conventions)
- Setup platform variations (recommendation: assist 1 older model too)
- Setup the plist information for the checks from the construct settings pane
- Set the product identify (Console) in your framework construct settings
- Examine 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 knowledge should you want it
- Write your framework you should use Swift “macros” to detect platforms
NOTE: There’s a flag in Xcode to permit app extension API solely, in case you are embedding your framework inside an software extension it ought to be enabled!
Congratulations, now you’ve gotten your model new Swift framework made within the conventional method. 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, nevertheless it’s not really useful as a result of it’s a hack. Nonetheless a number of open supply libraries do the identical method, 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 information, use one for the framework and one for the checks
- Rename bundle identifier (we don’t want platform names there too)
WARN: States might be blended up in case you are constructing for a number of platforms, nevertheless it is a good clear method to assist each platforms, with out duplications.
Tips on how to use a Swift framework?
Embedding your framework is essentially the most simple factor to do. You may 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 may go to the embedded binaries part inside the final venture data tab and add the framework as a dependency.
Swift Package deal Supervisor
With SPM, it’s a must to make a Package deal.swift file first, you then’ll be capable of construct your targets with the swift construct command. Now that Xcode helps the Swift Package deal Supervisor, it’s very easy to combine third social gathering frameworks through the use of it.
You may obtain the ultimate framework examples from GitHub.
Just remember to don’t miss out my deep dive into swift frameworks put up.