制作自己的framework的方法
1.新建一個framework

截屏2022-05-31 17.14.12.png
2.設置屬性
1.Mach-O Type 設置為 Static Library

截屏2022-05-31 17.19.28.png
2.Other Linker Flags 設置為 -ObjC

截屏2022-05-31 17.21.27.png
3.Build Active ArchiteTure Only 設置為NO

截屏2022-05-31 17.22.54.png
3.別人需要引用的頭文件,需要設置為public

截屏2022-05-31 17.24.59.png
.h文件中也需要引用public的頭文件

截屏2022-05-31 17.25.41.png
4.生成Aggregate腳本文件,合并生成靜態(tài)庫
1.新建 Aggregate文件 File - New-Target

截屏2022-05-31 17.28.25.png

截屏2022-05-31 17.28.35.png
2.添加腳本

截屏2022-05-31 17.29.44.png
3.在shell中添加以下腳本內(nèi)容
#!/bin/sh
#要build的target名
TARGET_NAME=${PROJECT_NAME}
if [[ $1 ]]
then
TARGET_NAME=$1
fi
UNIVERSAL_OUTPUT_FOLDER="${SRCROOT}/Products"
#創(chuàng)建輸出目錄,并刪除之前的framework文件
mkdir -p "${UNIVERSAL_OUTPUT_FOLDER}"
rm -rf "${UNIVERSAL_OUTPUT_FOLDER}/${TARGET_NAME}.framework"
#分別編譯模擬器和真機的Framework
xcodebuild -target "${TARGET_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build
xcodebuild -target "${TARGET_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphonesimulator BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build
#拷貝framework到univer目錄
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${TARGET_NAME}.framework" "${UNIVERSAL_OUTPUT_FOLDER}"
#合并framework,輸出最終的framework到build目錄
lipo -create -output "${UNIVERSAL_OUTPUT_FOLDER}/${TARGET_NAME}.framework/${TARGET_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${TARGET_NAME}.framework/${TARGET_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${TARGET_NAME}.framework/${TARGET_NAME}"
#刪除編譯之后生成的無關的配置文件
dir_path="${UNIVERSAL_OUTPUT_FOLDER}/${TARGET_NAME}.framework/"
for file in ls $dir_path
do
if [[ ${file} =~ ".xcconfig" ]]
then
rm -f "${dir_path}/${file}"
fi
done
#判斷build文件夾是否存在,存在則刪除
if [ -d "${SRCROOT}/build" ]
then
rm -rf "${SRCROOT}/build"
fi
rm -rf "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator" "${BUILD_DIR}/${CONFIGURATION}-iphoneos"
#打開合并后的文件夾
open "${UNIVERSAL_OUTPUT_FOLDER}"

截屏2022-05-31 17.36.45.png
5.設置SDK所支持的最低版本

截屏2022-05-31 17.39.07.png
6.配置Excluded Architectures 下的Any iOS Simulator SDK 為arm64

截屏2022-05-31 17.41.06.png
7.將scheme的編譯模式選擇為release

截屏2022-05-31 17.43.50.png
8.選擇Aggregate,選擇Any iOS Device ,command+b運行腳本,腳本會自動打開文件夾,生成的.framework即是。

截屏2022-05-31 17.44.41.png

截屏2022-05-31 17.44.47.png
9.將framework引入項目中,并在target-General中添加framework,設置為Do Not Embed

截屏2022-05-31 17.48.47.png
10. 引用頭文件,調(diào)用即可

截屏2022-05-31 17.52.38.png