第二步:新建一個子工程的bundle
1.新建bundle工程:
在指定子模塊下新增target
image.png
新增bundle target
image.png
2.修改bundle的設置:
- 因為bundle默認是macOS的所以要改成iOS
需要將FrameworkBundle->Build Settings->Architectures->Base SDK改為iOS
image.png
- 關閉bitcode
FrameworkBundle->Build Settings->Build Options->Enable Bitcode設置為NO.
image.png
- 設置開發環境
分別將FrameworkBundle->Build Settings->Deployment下的iOS Deployment Target和macOS Deployment Target,選擇為你最低支持的版本
image.png
- 設置
將FrameworkBundle->Build Settings->User-Defined->COMBINE_HIDPI_IMAGES設置為NO
注1:此屬性在Base SDK 選擇了iOS SDK之后才會出現
注2:若不設置此項,bundle中的png圖片經過編譯打包會變成tiff的文件
image.png
- 添加資源
常用資源如.png/.xib等
image.png
3.添加依賴
- 將bundle添加為子工程的依賴
為了編譯framework前自動編譯bundle
image.png- 將子工程添加為主工程的依賴(上一篇文章已做此操作)
略...
4.子工程添加腳本
創建腳本
image.png
- 將下面腳本內容復制,并做如下修改:
共兩處:
1.子工程名稱
2.bundle名稱
image.png
//腳本內容
//腳本作用:編譯子工程時,一并打包bundle,并導出至指定文件夾
#指定 FrameWork 與 bundle的target名稱
Bundle_NAME="XHCommonBusinessBundle"
#打包結果存儲地址
Products_DIR=${SRCROOT}/Products/
#定義framework與bundle存儲路徑
Bundle_INSTALL_DIR=${SRCROOT}/Products/${Bundle_NAME}.bundle
#將要生成包的路徑
WRK_DIR=build
Bundle_SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${Bundle_NAME}.bundle
Bundle_IPHONEOS_DIR=${WRK_DIR}/Release-iphoneos/${Bundle_NAME}.bundle
#清理下工程
# -configuration ${CONFIGURATION}
# Clean and Building both architectures.
if [ "${CONFIGURATION}" == "Debug" ]; then
xcodebuild -configuration "Release" -target "${Bundle_NAME}" -sdk iphoneos clean build
xcodebuild -configuration "Release" -target "${Bundle_NAME}" -sdk iphonesimulator clean build
#清除下存儲路徑下的舊包
if [ -d "${Bundle_INSTALL_DIR}" ]
then
rm -rf "${Bundle_INSTALL_DIR}"
fi
mkdir -p "${Bundle_INSTALL_DIR}"
#拷貝bundle
cp -R "${Bundle_SIMULATOR_DIR}" "${Products_DIR}/"
else
xcodebuild -configuration "Release" -target "${Bundle_NAME}" -sdk iphoneos clean build
#清除下存儲路徑下的舊包
if [ -d "${Bundle_INSTALL_DIR}" ]
then
rm -rf "${Bundle_INSTALL_DIR}"
fi
mkdir -p "${Bundle_INSTALL_DIR}"
#拷貝bundle
cp -R "${Bundle_IPHONEOS_DIR}" "${Products_DIR}/"
fi
#判斷release
#移除模擬器架構
rm -r "${WRK_DIR}"
腳本執行后會自動生成"胖bundle"
image.png
將bundle拖入(引用至)主工程
image.png
END