What’s a framework?
A framework is a hierarchical listing that encapsulates shared assets, similar to a dynamic shared library, nib information, picture information, localized strings, header information, and reference documentation in a single bundle.
So in a nutshell, a framework is a extremely reusable part to your apps.
Easy methods to make it?
There may be an article about Xcode conventions which can assist you manage your tasks, you need to test that first, if you have not earlier than.
Conventional method
There’s a conventional option to make a framework in Xcode. I’ll 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 undertaking:
- Create a brand new undertaking 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 in keeping with the platform names
Now in Finder:
- Create a Sources folder and transfer all of the Swift and header information there
- Create an Belongings folder with platforms subfolders
- Transfer all of the Information.plist information into the proper platfrom subdirectory
- Create a Checks folder and transfer take a look at information there
Again to Xcode:
- Take away each group and add the brand new Folders from Finder
- Verify that each goal has the proper information (framework & assessments)
- Contained in the header file, substitute UIKit depencency with Basis
The objective 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 assessments 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 knowledge in case you want it
- Write your framework you should use Swift “macros” to detect platforms
There’s a flag in Xcode to permit app extension API solely, in case you are embedding your framework inside an software extension it needs 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 undertaking with cross platform assist for each platform, nevertheless it’s not really helpful as a result of it is a hack. Nevertheless a number of open supply libraries do the identical method, so why should not we.
- Delete all of the targets, schemes, besides macOS!!!
- Rename the remaining goal, scheme (we do not want platform names)
- Use the undertaking configuration file, set the xcconfig on the undertaking
- Delete Information.plist information, use one for the framework and one for the assessments
- Rename bundle identifier (we do not want platform names there too)
States will be blended up in case you are constructing for a number of platforms, nevertheless this can be a good clear option to assist each platforms, with out duplications.
Easy methods to use a Swift framework?
Embedding your framework is probably the most easy factor to do. You’ll be able to merely drag the framework undertaking to a different Xcode undertaking, the one factor left to do is to the embedded the framework into the appliance. You’ll be able to go to the embedded binaries part inside the final undertaking information tab and add the framework as a dependency.
Swift Package deal Supervisor
With SPM, you need to make a Package deal.swift file first, then you can construct your targets with the swift construct command. Now that Xcode helps the Swift Package deal Supervisor, it is very easy to combine third get together frameworks through the use of it.
You’ll be able to obtain the ultimate framework examples from GitHub.
Just be sure you do not miss out my deep dive into swift frameworks publish.
