多圖預(yù)警~
前言
隨著業(yè)務(wù)的增多庵芭,app的模塊必然增多弄慰,開發(fā)也會拆分出相應(yīng)的小組負(fù)責(zé)維護(hù)某些模塊缤沦,這時候很有必要將模塊從主的代碼中抽取成子工程增显。
子工程
- 子工程創(chuàng)建成Static Library
也可以創(chuàng)建成Framework胃碾,但是xib引用圖片資源就不方便了
- 子工程創(chuàng)建Bundle Target
Static Library不能處理資源涨享,需要單獨建立一個Bundle Target收集資源。
創(chuàng)建好Target記得給Lib Target添加依賴仆百,在生成.a的同時生成Bundle.Bundle,如圖:
- 資源分類
在創(chuàng)建新的文件是厕隧,要加入到對應(yīng)的Target中,否則會有奇怪的問題俄周。
xib 中使用的圖片都是在MainBundle中搜索吁讨,
現(xiàn)在把資源打包到子Bundle就引用不到,
需要在集成到主工程的時候峦朗,
通過腳本把子Bundle內(nèi)的資源移動到MainBundle中建丧,
下文介紹主工程再作說明
如此炮制做出其他的子工程
此處省略N字。波势。翎朱。
主工程
- 引用子工程
手動拖動子工程的.xcodeproj文件引用到主工程中,結(jié)束后如下圖:
- 配置
1.設(shè)置Target依賴
2.search path
3.other link flags
$(inherited)很有用尺铣,特別是在使用Cocoapods的時候
-all_load是強(qiáng)制加載子工程和Class相關(guān)的文件,因為有時候使用NSClassFromString()會找不到class
-ObjC防止子工程存在分類導(dǎo)致的運行時閃退
4.處理子工程資源
在Build Phases中添加腳本塊
根據(jù)自己的實際情況處理拴曲,我的demo中只有三個子工程擁有Bundle,處理如下:
modules=( "ModuleA" "ModuleB" "ModuleC" )
cd $CONFIGURATION_BUILD_DIR
for file in ${modules[@]}
do
if [ -d "$file""Bundle.Bundle" ]
then
rm ${file}"Bundle.Bundle/info.plist"
cp -rf ${file}"Bundle.Bundle/" $CONTENTS_FOLDER_PATH
fi
done
添加之后的效果:
Run查看效果:
.app內(nèi)部資源:
模擬器:
隨著子工程的越來越多凛忿,越來越大疗韵,管理就很有必要,稍后補上Cocoapods管理子工程侄非。
最后:這里是demo
最后的最后:如果喜歡還請點贊~~