iOS framework生成

(1)创建一个文件夹名为SDK

(2)创建一个.xcworkspace文件,放入文件夹SDK中


iOS framework生成_第1张图片
创建.xcworkspace文件

生成后,在文件夹的样子


iOS framework生成_第2张图片
SDK文件夹中显示

(3)在刚刚Xcode打开时,创建一个demo,名称XHTestDemo


iOS framework生成_第3张图片
创建demo

存放位置,存在刚刚创建xcworkspace的同一个文件夹SDK中


iOS framework生成_第4张图片
存放demo

(4)创建SDK,名为XHTestSDK,存放在SDK文件夹中,


iOS framework生成_第5张图片
创建SDK

(5)存放好之后,目录


目录层级

(6)在sdk中创建需要的内容,创建内容之后,在XHTestSDK/XHTestSDK.h中添加#import


iOS framework生成_第6张图片
创建sdk内容

配置architecture,添加armv7s,添加,arm64。设置Build active Architecture Only 设置为NO,设置为NO是真机模拟器都能够编译


iOS framework生成_第7张图片
配置Architecture

设置Linking --Mach-O Type 设置Static Libirary,Link WithStandard Libraries设置为NO,Dead Code Stripping设置为NO


iOS framework生成_第8张图片
借用别人的图

(6)XHTestSDK,设置暴露文件,project中的XHView.h移到public


iOS framework生成_第9张图片
添加公开文件

(7)demo中,添加SDK。XHTestDemo target -General-Linked frameworks and Libiaries 添加XHTestSDK

iOS framework生成_第10张图片
demo中添加SDK

(8)添加target,创建一个名为createSDK的target,project--》XHTestSDK


iOS framework生成_第11张图片
创建target

创建之后target的样子


target

(9)给createSDK添加framework。选择createSDK,build phase-- Target Dependecies--添加XHTestSDK


iOS framework生成_第12张图片
createSDK添加framework

(10)在文件夹SDK中创建一个文件夹名为scripts


创建scripts文件夹

(11)在scripts中创建一个build-universal-framework.sh,这个文件的内容如下


# Sets the target folders and the final framework product.

# 如果工程名称和Framework的Target名称不一样的话,要自定义FMKNAME

# 例如: FMK_NAME = "MyFramework"

FMK_NAME=${PROJECT_NAME}

# Install dir will be the final output to the framework.

# The following line create it in the root folder of the current project.

INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework

# Working dir will be deleted after the framework creation.

WRK_DIR=build

DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.framework

SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}.framework

# -configuration ${CONFIGURATION}

# Clean and Building both architectures.

xcodebuild clean build

xcodebuild OTHER_CFLAGS="-fembed-bitcode"-configuration"Release"-target"${FMK_NAME}"-sdk iphoneos 

xcodebuild -configuration"Release"-target"${FMK_NAME}"-sdk iphonesimulator

# Cleaning the oldest.

if [ -d "${INSTALL_DIR}" ] #xh 删除这个目录

then

rm -rf "${INSTALL_DIR}" #xh 删除目录及其内容

fi

mkdir -p "${INSTALL_DIR}" #xh 确保路径存在,不存在则创建一个

cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/" #若参数一是源文件,则将参数一内容复制到参数二中

# Uses the Lipo Tool to merge both binary files (i386 + armv6/armv7) into one Universal final product.

# 使用lipo工具合并模拟器和真机,输出在ouput路径里

lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/${FMK_NAME}"

#rm -r "${WRK_DIR}"

# 打开文件

open "${INSTALL_DIR}"

iOS framework生成_第13张图片
build-universal-framework.sh内容展示

(12)选中createSDK--》build Phase--》Runscript,Shell处写../scripts/build-universal-framework.sh


iOS framework生成_第14张图片
添加script

(13)target选择createSDK,commond + B,编译


编译

(14)这个framework就是我们需要的,show in FInder 就可以找到绝对地址


iOS framework生成_第15张图片

找到绝对地址,选中framework,如下图

选中framework

把framework拖动到你需要的项目中即可,大功告成。


参考了大神的文章,在此非常感谢。

参考地址:https://www.cnblogs.com/oc-bowen/p/7478461.html

你可能感兴趣的:(iOS framework生成)