Forms is all in one iOS framework
- FormsAnalytics - Application analytics
- FormsAnchor - DSL
- FormsAppStoreReview - AppStore review helper
- FormsDatabase - Database
- FormsDatabaseSQLite - Database SQLite
- FormsDeveloperTools - Developer Tools
- FormsDevice - Device info
- FormsHomeShortcuts - Home shortcuts
- FormsInjector - Dependency Injection
- FormsLocation - Location service
- FormsLogger - Logger data
- FormsMock - Mocking data
- FormsNetworking - Network layer
- FormsNetworkingImage - Network layer for images
- FormsNotifications - Firebase notifications
- FormsPermissions - Application permissions
- FormsUpdates - Check app update
- FormsUtils - Utils and extensions
- FormsUtilsUI - Utils and extensions for UIKit
- FormsTransitions - UI transitions
- FormsValidators - Data validators
Kits extend Forms module
- FormsCalendarKit - Calendar
- FormsCardKit - Card
- FormsImagePickerKit - Image Picker
- FormsMapKit - Map
- FormsPagerKit - Pager
- FormsSideMenuKit - Side menu
- FormsSocialKit - Sign in with external services
- FormsTabBarKit - TabBar
- FormsToastKit - Toast
- FormsTodayExtensionKit - Today extension
- iOS 10.0+
- Swift 5.2
- Xcode 11.0+
Last stable version
XCode 11.5 (11E608c)
Download project and run ./build.sh script
Forms.framework
FormsAnalytics.framework
FormsAnchor.framework
FormsAppStoreReview.framework
FormsCalendarKit.framework
FormsCardKit.framework
FormsDatabase.framework
FormsDatabaseSQLite.framework
FormsDevice.framework
FormsDeveloperTools.framework
FormsHomeShortcuts.framework
FormsImagePickerKit.framework
FormsInjector.framework
FormsLocation.framework
FormsLogger.framework
FormsMapKit.framework
FormsMock.framework
FormsNetworking.framework
FormsNetworkingImage.framework
FormsNotifications.framework
FormsPermissions.framework
FormsPager.framework
FormsSideMenuKit.framework
FormsSocialKit.framework
FormsTabBarKit.framework
FormsToastKit.framework
FormsTransitions.framework
FormsUtils.framework
FormsUtilsUI.framework
FormsValidators.framework
./Dependencies contains external dependencies
AppAuth.framework
FBSDKCoreKit.framework
FBSDKLoginKit.framework
FirebaseAnalytics.framework
FirebaseCore.framework
FirebaseCoreDiagnostics.framework
FirebaseCrashlytics.framework
FirebaseInstallations.framework
FirebaseInstanceID.framework
FirebaseMessaging.framework
GTMAppAuth.framework
GTMSessionFetcher.framework
GoogleAppMeasurement.framework
GoogleDataTransport.framework
GoogleDataTransportCCTSupport.framework
GoogleSignIn.framework
GoogleUtilities.framework
PromisesObjC.framework
Protobuf.framework
nanopb.framework
To update dependencies You should use
carthage bootstrap
and copy downloaded framework to ./Dependencies folder
FormsDemo contains demo implementations for some providers etc. Just check FormsDemo/FormsDemo/Source/Implementations folder
Frameworks should have consistent build settings:
- Proper version
- Build Active Architecture Only ->
No (for Debug)
- iOS Deployment Target ->
iOS 10.0
- Framework Search Path ->
$(inherited) $(PROJECT_DIR)/../Dependencies
- Other Linker Flags ->
-ObjC
- Other Swift Flags ->
-Xfrontend -warn-long-function-bodies=1000 -Xfrontend -warn-long-expression-type-checking=1000
- Swift Language version ->
Swift 5
- Defines module ->
NO
- Add to
Forms-Universal-Framework
- Add to
build.sh
andbuild_incremental.sh
You can submit issues, ask general questions, or open pull requests.
The Forms framework is inspired by:
-
Atchitectures
Clean Swift -
FormsAnalytics
Umbrella -
FormsDeveloperTools
Gedatsu, LifetimeTracker -
FormsDevice
DeviceKit -
FormsImagePicker
WDImagePicker -
FormsInjector
Swinject
- Remove storyboard file and key from Info.plist
- Add Config subfolder for each target
- Configure Forms and Assemblies in AppDelegate
- Configure external dependencies
- Configure Forms frameworks
- Add trimming architectures script
- Add group identifier
- Add URL Type in Info.plist
- Add Settings.bundle
- Add HomeShortcuts
- Add Crashlytics configuration
- Add Lint
- Add R.swift
NOTICE: Remember about AppDelegate and SceneDelegate settings
The Forms framework is already integrated in:
WineBook - project inspired by Stanton Lab with mocked API
MIT license. See the LICENSE file for details.
If your project doesn't compile try
- Add LocalAuthentication.framework without Signing
- Add StoreKit.framework without Embedding
- Add Google frameworks without Embedding
- Add
-Objc
in Other linker flags - Add
-lc++
in Other linker flags - eg. for Crashlytics -
error: Couldn't IRGen expression, no additional error
this error may be related with FBSDK version (x6.5.2 is the latest stable version) - Add Google frameworks without Embedding
-
could not build Objective-C module
this error may be related toDefines module
option. (should beNO
) -
CFBundleIdentifier Collision Error
- in Embed Frameworks setCode Sign On Copy
toTRUE
If dependency doesn't compile, try build it manually
- Disable bitcode
- set
Build Active Architecture
Only toNo
- Add
-ObjC
other linker flag - Build for
Simulator
andGeneric Device
- Copy
lipo.sh
script toProducts
directory - Run
lipo.sh
to merge architectures - Copy fat framework to Your project