前言
這幾年做的項目,基本都是封裝成SDK供第三方使用,在這里做個記錄,希望各位技術(shù)大牛多多指教,同時也希望可以給別人給予幫助和借鑒。
感興趣的可以看下面的文章
iOS SDK的封裝(一)靜態(tài)庫.a SDK文件的封裝和使用
1 .framework 的創(chuàng)建
1.1 打開Xcode創(chuàng)建一個新的工程,選擇工程如下:

image.png
1.2 創(chuàng)建工程完畢后,目錄如下

image.png
1.3 配置參數(shù)
1.3.1 TARGETS --> Build Settings --> Linking 配置參數(shù)。

image.png
1.3.2 接著配置 TARGETS --> Build Settings --> Build Active Architecture Only 設(shè)置為NO。

image.png
1.3.3 接著配置,增加armv7s:TARGETS --> Build Settings --> Architectures,在Architectures下增加armv7s,并選中。

image.png
1.4 創(chuàng)建一個工具類AtaticLibTool,添加一個方法用于測試;

image.png
1.5 設(shè)置Headers:將你要公開的頭文件拖至Public下,要隱藏的放在Private或者Project下,當(dāng)然,隱藏的頭文件就無法再被引用;

image.png
1.6 需要在testFramework.h(必須是公開的,否則無法引用)中將你所有要公開的.h引入。

image.png
1.7 編譯打包
1.7.1 首先 Edit Scheme

image.png
1.7.2 設(shè)置Build Configuration ,選擇Release。

image.png
1.7.3 添加編譯打包版本
1.7.3.1 選中TARGETS下的工程,點擊菜單的Editor,選擇Add Target創(chuàng)建一個Aggregate;

image.png
1.7.3.2 選擇Cross-platform --> Other --> Aggregate,點擊Next創(chuàng)建;

image.png
1.7.3.3 嵌入腳本,TARGETS --> MyFramework --> Build Phases --> + --> New Run Script Phase 。

image.png
1.7.3.4 編輯腳本。

image.png
腳本如下:
# Sets the target folders and the finalframework product.
# 如果工程名稱和Framework的Target名稱不一樣的話,要自定義FMKNAME
# 例如: FMK_NAME = "MyFramework"
FMK_NAME=${PROJECT_NAME}
# Install dir will be the final output tothe framework.
# The following line create it in the rootfolder of the current project.
INSTALL_DIR=${SRCROOT}/Products/$ {FMK_NAME}.framework
# Working dir will be deleted after theframework 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 -configuration"Release"-target"${FMK_NAME}"-sdk iphoneos clean build
xcodebuild -configuration"Release"-target"${FMK_NAME}"-sdk iphonesimulator clean build
# Cleaning the oldest.
if[-d"${INSTALL_DIR}"]
then
rm -rf"${INSTALL_DIR}"
fimkdir -p"${INSTALL_DIR}"
cp -R"${DEVICE_DIR}/""${INSTALL_DIR}/"
# Uses the Lipo Tool to merge both binaryfiles (i386 + armv6/armv7) into one Universal final product.
lipo -create"${DEVICE_DIR}/${FMK_NAME}""${SIMULATOR_DIR}/${FMK_NAME}"-output"$ {INSTALL_DIR}/${FMK_NAME}"
rm -r"${WRK_DIR}"
open"${INSTALL_DIR}"
1.8 編譯。如圖所示,command + B編譯。這里Generic iOS Device的意思是“iOS通用設(shè)備”,大概就是說模擬器和真機都能用。

image.png
1.9 編譯成功后,選擇Products --> 右軟件 --> Show in Finder ,那就是我們需要的framework文件。

image.png

image.png
1.10 最后使用Framework,導(dǎo)入另一個項目中,我們打開這個framework看看,發(fā)現(xiàn)只有Headers,里面有兩個.h,其中一個是我們之前添加的FrameworkDemo.h文件,另一個就是我們的AtaticLibTools.h 。

image.png
2 完成 .framework 的創(chuàng)建和打包、使用。
3 后記
本篇主要講述了一種.framework SDK的生成和使用,感興趣的給個贊或者關(guān)注~~~