swift 制作一个framework库

176 阅读1分钟

参考链接

1.首先创建一个名为Demo的项目

截屏2022-08-03 14.07.48.png

2.File -> new -> target 选择framework

截屏2022-08-03 14.08.57.png

截屏2022-08-03 14.09.05.png

截屏2022-08-03 14.11.15.png

3. target 选择新建的GPKit,选择支持的最低版本

截屏2022-08-03 14.12.33.png

4. 相关设置

截屏2022-08-03 14.15.06.png

在 Build Settings 里
Build Active Architecture Only -> NO
Dead Code Stripping -> NO
Mach-O Type ->  Static Library
Build Libraries for Distribution -> YES
5. 编译模式设置为release

截屏2022-08-03 14.19.24.png

截屏2022-08-03 14.19.39.png

6. 将代码文件放在GPKit 目录下

截屏2022-08-03 14.22.11.png

6.添加合并脚本

截屏2022-08-03 14.24.09.png

截屏2022-08-03 14.24.20.png

截屏2022-08-03 14.25.40.png

7. 添加脚本

截屏2022-08-03 14.27.28.png

截屏2022-08-03 14.26.28.png

#!/bin/sh
# SDK名字, 改成自己的SDK名字即可
SDK_NAME=GPKit

# framework最后输出的路径的文件夹
UNIVERSAL_OUTPUTFOLDER="${SRCROOT}/Products/"

# 工作区间, 因为没有用到cocoaPod, 所以是${PROJECT_NAME}.xcodeproj
# 如果用到cocoaPod, 就是${PROJECT_NAME}.xcworkspace
WORKSPACE_NAME=${PROJECT_NAME}.xcodeproj


# 创建输出路径文件夹
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"

# 移除上次编译生成的framework
rm -rf "${UNIVERSAL_OUTPUTFOLDER}/${SDK_NAME}.framework"

# 编译真机版framework
xcodebuild -target "${SDK_NAME}" -configuration ${CONFIGURATION} -sdk iphoneos ONLY_ACTIVE_ARCH=NO BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build

# 编译模拟器版framework
xcodebuild -target "${SDK_NAME}" -configuration ${CONFIGURATION} -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build

# 拷贝编译生成的真机版framework到最终输出的路径
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${SDK_NAME}.framework" "${UNIVERSAL_OUTPUTFOLDER}"

# 将模拟器框架的swift模块复制到最终输出的路径

SIMULATOR_SWIFT_MODULES_DIR="${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${SDK_NAME}.framework/Modules/${SDK_NAME}.swiftmodule/."

if [ -d "${SIMULATOR_SWIFT_MODULES_DIR}" ]; then

cp -R "${SIMULATOR_SWIFT_MODULES_DIR}" "${UNIVERSAL_OUTPUTFOLDER}/${SDK_NAME}.framework/Modules/${SDK_NAME}.swiftmodule"

fi

# 合并模拟器和真机framework, 生成通用framework
lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/${SDK_NAME}.framework/${SDK_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${SDK_NAME}.framework/${SDK_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${SDK_NAME}.framework/${SDK_NAME}"

# 删除编译之后生成的无关的配置文件
dir_path="${UNIVERSAL_OUTPUTFOLDER}/${SDK_NAME}.framework/"

for file in ls $dir_path
do
if [[ ${file} =~ ".xcconfig" ]]
then
rm -f "${dir_path}/${file}"
fi
done

# 打开合并后的文件夹
open "${UNIVERSAL_OUTPUTFOLDER}"
8.选中GPKitAggregate运行 生成framework

截屏2022-08-03 14.32.25.png