在上一章節(jié)中,我們完成MySDK工程創(chuàng)建,并且能夠利用我們的測試工程MySDKTests對SDK隨時進行調試试浙。本文中我們將一步一步來完善SDK工程配置徒役,從而為我們后續(xù)的開發(fā)提供更加便利的條件。開始之前于游,確保你已經(jīng)打開了我們之前創(chuàng)建好的Workspace毁葱。
Universal Target
選中MySDK工程,然后File->New->Target贰剥,當然你也可以直接點擊TARGETS底下的“+”來創(chuàng)建
找到iOS/Other/Aggregate倾剿,點擊Next,命名為MySDK-Universal蚌成。為什么需要有這樣一個集合類型的Target前痘?因為我們在編譯SDK后生成的Framework文件是分模擬器和真機兩個版本凛捏,這取決于你選擇的編譯目標。那么為了讓SDK能夠同時適用于模擬器和真機际度,我們需要對兩個版本的Framework進行合并葵袭。這里我們通過腳本來實現(xiàn)。在我們的scripts目錄下創(chuàng)建腳本文件build-universal-framework.sh乖菱,并添加如下內(nèi)容
#!/bin/sh
UNIVERSAL_OUTPUTFOLDER=../build/
# 創(chuàng)建輸出目錄坡锡,并刪除之前的framework文件
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"
rm -rf "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework"
# 分別編譯模擬器和真機的Framework
xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO - configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build
xcodebuild -target "${PROJECT_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}-iphoneos/${PROJECT_NAME}.framework" "${UNIVERSAL_OUTPUTFOLDER}/"
# 合并framework,輸出最終的framework到build目錄
lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework/${PROJECT_NAME}"
然后在MySDK工程中選中MySDK-Universal窒所,添加MySDK依賴
為MySDK-Universal添加腳本
來測試一下鹉勒,選中MySDK-Universal,然后Build
這時在你的SDK目錄下會多出一個Build文件夾吵取,里面就是最終我們需要的Framework文件
Configurations
之前在我們的目錄中創(chuàng)建了Configurations文件夾禽额,是時候把它加入到項目中來了
然后在該Group下新建我們需要用到的幾個config文件
好,到這里我們完成了配置文件的創(chuàng)建皮官,當然根據(jù)需要脯倒,你可以對其進行一些擴充。現(xiàn)在我們將這些文件配置到MySDK的Configurations中捺氢,看起來是大概如下:
這樣做的好處是你可以直接通過這些文件去管理Project和Target的Build Settings藻丢。
我來測試一下,選擇MySDK-Library.xcconfig摄乒,輸入如下內(nèi)容:
MACH_O_TYPE = staticlib
這時候你可以到你的Build Settings中查看
對應的選項修改已經(jīng)生效悠反,細心的朋友可以看到我們在config文件中輸入的名稱
MACH_O_TYPE
和Build Settings中的“Mach-O Type”不一樣,那么怎樣才能知道我們需要修改項的內(nèi)部定義名稱呢馍佑?這里有兩種方法斋否,你可以去到Build Settings里面選擇某一項復制,然后粘貼到配置文件中即可拭荤。另外我們也可以通過如下方式直接查看茵臭,以上是對Target的修改,之前我們同樣也為Project設置了MySDK-Project-Debug.xcconfig和MySDK-Project-Release.xcconfig舅世,為什么需要這么做笼恰,有一點需要記住,Target的配置會覆蓋Project歇终,也就是說Target的優(yōu)先級更高社证,Project相當于Target的默認值。下面做個測試
MySDK-Project.xcconfig
MACH_O_TYPE = bundle
MySDK-Project-Debug.xcconfig
#include "MySDK-Project.xcconfig"
MySDK-Project-Release.xcconfig
#include "MySDK-Project.xcconfig"
結果如下
到此评凝,我們順利完成了一些基本配置追葡。下一章節(jié)將探討B(tài)undle的配置以及三方庫的使用。