上一篇的方案是:單獨(dú)創(chuàng)建一個(gè)新的庫好唯,把它當(dāng)做一個(gè)新的庫來管理。這樣的弊端是需要維護(hù)兩個(gè)庫霞溪,還要在宿主工程的Podfile中修改pod 'XMGDownLoad或XMGDownLoadLib'來切換源碼和二進(jìn)制境钟。如果類似的庫多了,工作量就大了镀岛。本篇將解決這個(gè)問題。
使用復(fù)合工程來解決這個(gè)問題
- 打開XMGDownLoad-Example源碼工程惧互;
- TARGETS處添加一個(gè).framework庫哎媚,修改該庫的編譯構(gòu)架為所有(Build Settings--> Build Active Architecture Only --> NO)、mach-O Type為static library(Build Settings --> Mach-O Type --> static library)喊儡、Headers暴露(拖入文件后再暴露)拨与、release。
-
拖入源碼到庫所屬文件夾中艾猜,注意是引用關(guān)系买喧,不是復(fù)制拷貝關(guān)系,這樣修改的都是同一處文件匆赃,操作如下圖淤毛。然后暴露下頭文件從Project到Public。
1.設(shè)置編譯所有構(gòu)架
2.mach-O Type 靜態(tài)庫
3.暴露接口
4.Edit Scheme——>release
- 修改XMGDownLoad-Example工程的的podspec算柳,注釋s.source_files低淡,改為:s.source_files = 'XMGDownLoad/Classes/*/.h'(只安裝.h頭文件,.m不能給瞬项,否則就起不到保護(hù)的作用)蔗蹋;s.vendored_frameworks = 'XMGDownLoad/Products/XMGDownLoad. framework'(庫的路徑,根目錄下新建個(gè)Products文件夾拷貝入編譯好的framework庫或者修改設(shè)置囱淋,在上一篇中講到)
s.source_files = 'XMGDownLoad/Classes/**/*.h'
s.vendored_frameworks = 'XMGDownLoad/Products/XMGDownLoad.framework'
修改version猪杭,提交代碼到遠(yuǎn)程庫。
-
宿主工程妥衣,podfile文件中只需要 pod 'XMGDownLoad'即可皂吮,無需加Lib,因?yàn)閜odspec文件中指明了安裝頭文件和二進(jìn)制庫税手,tag指名了哪一份代碼蜂筹,s.source :git指名了源碼地址。
宿主工程芦倒,如果是pod install狂票,是從Podfile.lock中找版本號(hào),所以安裝之后還是源碼版本0.1.0不是二進(jìn)制庫版本0.1.1熙暴;所以應(yīng)該用pod update --no-repo-update闺属,從podfile中找版本號(hào)。
pod install不升級(jí)版本號(hào)——從podfile.lock找原有版本號(hào)version或tag
pod update升級(jí)版本號(hào)——從podfile找spec安裝最新版本號(hào)version或tag
這個(gè)方案的好處
- 維護(hù)
下載庫XMGDownLoad
周霉,只需要維護(hù)一份代碼就可以了掂器。源碼XMGDownLoad和庫XMGDownLoadLib都在XMGDownLoad-Example工程中,只需要維護(hù)一份在Classes中的代碼俱箱。 - 宿主Podfile只需pod 'XMGDownLoad'就可以安裝二進(jìn)制庫国瓮。
這個(gè)方案的思路
XMGDownLoad-Example中Targets添加創(chuàng)建一個(gè).framework庫,該庫代碼引用原Classes有的狞谱,而不是復(fù)制一份乃摹。這樣修改代碼還是修改原來那一份的。