我們在iOS開發(fā)中經(jīng)常會(huì)導(dǎo)入一些Framework,那么今天我們就自己動(dòng)手打包一個(gè)Framework
首先我們來新建一個(gè)工程文件,選擇Cocoa Touch Framework,點(diǎn)擊Next,給文件命名(因?yàn)槭菧y試,隨便起了一個(gè)),然后Next,這樣我們就創(chuàng)建好了一個(gè)工程文件



我們看到工程里面有兩個(gè)文件(FrameworkText.h和Info.plist),暫且不管這兩個(gè)文件,下面我們來添加要公開的類及方法。 為了測試,我簡單的添加了一個(gè)Person類和Animal類

下面我們就開始生成Framework,首先我們來進(jìn)行一下相關(guān)的設(shè)置,如果你的項(xiàng)目中用到了系統(tǒng)或者第三方的框架,一定要在Link Binary With Libraries中導(dǎo)入相關(guān)Framework,第二個(gè)是Headers,一定要把想要公開的類的頭文件放到Public下面(如下圖)

接下來比較重要的一步,合并兩個(gè)打包好的Framework,為什么說是兩個(gè)呢,因?yàn)槲覀冊诤喜⒅坝媚M器運(yùn)行和用真機(jī)運(yùn)行是會(huì)得到兩個(gè)不同的Framework,重要的是這兩個(gè)Framework不能通用,所以要合并成一個(gè)通用的。



展開Run Script 之后將下面的代碼復(fù)制進(jìn)去,然后點(diǎn)擊運(yùn)行即可得到我們想要的Framework
if [ "${ACTION}" = "build" ]
then
INSTALL_DIR=${SRCROOT}/Products/${PROJECT_NAME}.framework
DEVICE_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework
SIMULATOR_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework
if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi
mkdir -p "${INSTALL_DIR}"
cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"
#ditto "${DEVICE_DIR}/Headers" "${INSTALL_DIR}/Headers"
lipo -create "${DEVICE_DIR}/${PROJECT_NAME}" "${SIMULATOR_DIR}/${PROJECT_NAME}" -output "${INSTALL_DIR}/${PROJECT_NAME}"
#open "${DEVICE_DIR}"
open "${SRCROOT}/Products"
fi

下面我們測試一下Framework,創(chuàng)建一個(gè)新的工程把剛剛打包好的Framework拖到工程中,導(dǎo)入頭文件即可使用,我在測試的時(shí)候碰到一個(gè)問題和大家分享一下

這個(gè)問題的解決方法如下圖



如果您遇到了別的問題,歡迎提出大家一起交流