Quantcast
Channel: Yudiz Solutions Ltd.
Viewing all articles
Browse latest Browse all 595

Develop your own Swift Framework

$
0
0

Overview

Developing your own swift framework has below benefits.

  1. Reusable code
  2. Secure or Hide your code
  3. Reduce recompilation
  4. Reduce recompilation
  5. Save time

Tool Used: Xcode 8.3.2, Swift 3+

To create your own framework in swift you just have to follow below 5 steps.

Step 1: Setup Framework Project

Create new Xcode project.

Click on ‘Cocoa Touch Framework’.

Write a name of your project, we have used ‘YudizFramework’. (Make sure to choose swift language) and Click on Next button.

Add new file inside ‘YudizFramework’ folder. (Press ⌘ + N or Click on File -> New -> File…)

Click on ‘Cocoa Touch Class’.

Write File Name ‘YudizFramework’ and Subclass of ‘NSObject’.

Step 2: Write some code

Write following code inside ‘YudizFramework.swift’

open class YudizFramework: NSObject {

    open class func logToConsole(_ msg: String) {
        print(msg);
    }
}

Note:- Make sure your class and method are open.

Step 3: To create Universal Framework

Add new ‘Aggregate’ target to your project.

And Add below script in ‘Run Script’ to it.

#!/bin/sh

UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal

# make sure the output directory exists
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"

# Step 1. Build Device and Simulator versions
xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos  BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build
xcodebuild -target "${PROJECT_NAME}" -configuration ${CONFIGURATION} -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build

# Step 2. Copy the framework structure (from iphoneos build) to the universal folder
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework" "${UNIVERSAL_OUTPUTFOLDER}/"

# Step 3. Copy Swift modules from iphonesimulator build (if it exists) to the copied framework directory
SIMULATOR_SWIFT_MODULES_DIR="${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/Modules/${PROJECT_NAME}.swiftmodule/."
if [ -d "${SIMULATOR_SWIFT_MODULES_DIR}" ]; then
cp -R "${SIMULATOR_SWIFT_MODULES_DIR}" "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/Modules/${PROJECT_NAME}.swiftmodule"
fi

# Step 4. Create universal binary file using lipo and place the combined executable in the copied framework directory
lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework/${PROJECT_NAME}"

# Step 5. Convenience step to copy the framework to the project's directory
cp -R "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework" "${PROJECT_DIR}"

# Step 6. Convenience step to open the project's directory in Finder
open "${PROJECT_DIR}"

Step 4: Build your Framework

Build your Framework by choosing ‘UniversalYudizFramework’ target pressing ⌘ + B.

After build is completed, Finder opens with your Framework in that.

Step 5: Add this framework to your any of your project

import UIKit
import YudizFramework

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

      YudizFramework.logToConsole("Share it if you liked it. 📢")

    }

}

Note:- If you are getting following error,

… Reason: image not found

Make sure your framework is added in both ‘Embedded Binaries’ and ‘Linked Framework and Libraries’.


Viewing all articles
Browse latest Browse all 595

Latest Images

Trending Articles



Latest Images