我們?cè)谑褂眠h(yuǎn)程私有庫(kù)的時(shí)候必然會(huì)遇到資源依賴(lài)的問(wèn)題,主要就是我們的xib或者StoryBoard這類(lèi)資源崭添,因?yàn)槲覀兊墓δ芙M件中有可能會(huì)涉及到寓娩,所以我們今天就來(lái)講講如何來(lái)做,這里我們以我們的主骨架組件化為例呼渣。
-
首先我們來(lái)回顧一下整個(gè)項(xiàng)目的主骨架
我們?cè)趓emoteLiba里面創(chuàng)建一個(gè)TZSoundMain的模板庫(kù)
-
我們現(xiàn)在測(cè)試工程里面將我們的代碼測(cè)試好棘伴,將組骨架的代碼拖到Classes文件夾下面
然后在測(cè)試工程里面pod install安裝代碼,并且把宿主工程中AppDelegate里面的代碼復(fù)制過(guò)來(lái)屁置,還有測(cè)試控制器一并拖過(guò)來(lái)
- 但是項(xiàng)目中還是會(huì)報(bào)錯(cuò)焊夸,一路追尋下來(lái)我們發(fā)現(xiàn)原來(lái)結(jié)果是少了基礎(chǔ)組件category中的內(nèi)容
-
此時(shí)應(yīng)該去修改.spec文件給我們添加基礎(chǔ)組件的依賴(lài),因?yàn)橹拔覀円呀?jīng)將基礎(chǔ)組件劃分了分支蓝角,我們?cè)谶@里需要的僅僅是Category分支
-
我們發(fā)現(xiàn)這里出現(xiàn)了報(bào)錯(cuò)提示阱穗,提示我們找不到TZSoundBase/Category,這里我們需要添加源
-
現(xiàn)在編譯就沒(méi)有問(wèn)題了使鹅,運(yùn)行的時(shí)候居然又崩了颇象,我們看看報(bào)錯(cuò)提示
-
原來(lái)是因?yàn)門(mén)ZMiddleView里面的xib文件加載出錯(cuò)了,因?yàn)榇藭r(shí)xib文件并不在我們的MainBundle里面
我們將MainBundle打開(kāi)看看里面的內(nèi)容
-
我們發(fā)現(xiàn)xib文件在Frameworks文件夾下面的TZSoundMain.Framework里面
進(jìn)到TZMiddeleView中修改加載xib文件的包路徑方法+ (instancetype)middleView中
//加載資源所在的bundle位置
NSBundle *currentBundle = [NSBundle bundleForClass:[self class]];
TZMiddleView *middleView = [[currentBundle loadNibNamed:@"TZMiddleView" owner:nil options:nil] firstObject];
-
然后再來(lái)跑一下測(cè)試工程并徘,看看bug有沒(méi)有解決
我們發(fā)現(xiàn)工程已經(jīng)跑起來(lái)了和我們的宿主工程幾乎相差無(wú)幾遣钳,唯一不同的就是缺少圖片,但是由于我們的資源都在宿主工程而沒(méi)有在我們的組件當(dāng)中麦乞,所以所有的圖片都無(wú)法加載蕴茴,我們其實(shí)應(yīng)該將我們的圖片資源都加載到我們的組件當(dāng)中,否則以后別人使用我們的組件還得單獨(dú)下載圖片姐直,這違背了我們的初衷倦淀。
那么下次我們將接著給大家來(lái)講講如何解決圖片依賴(lài)的問(wèn)題。