自定義Framework

第一次要制作framework,把制作過程分享一下,遇到了很多坑

簡單的版本可以通過XCode創(chuàng)建一個framework project,如下圖


圖一

這種可能很自動生成framework,但是如果過程中需要繼承到pod,引用第三方庫,就會顯得束手無策。

在強(qiáng)大互聯(lián)網(wǎng)的搜索下,找到了一個方法,通過創(chuàng)建target方式,但是這個有個弊端,下面會講到,先看看操作過程

1.創(chuàng)建target,選擇framework


圖二

2.點(diǎn)擊下一步,按照圖中,選擇對應(yīng)選項


圖三

3.生成target工程中會有如下目錄,可以在該目錄下去編輯存放代碼


圖四

4.緊接著按照pod方式接入,在podfile文件中引入需要的第三方庫


圖五

5.然后通過pod install 或者pod update,去更新第三方
6.在編譯的時候選擇xxxx這個工程,選擇編譯,就可以生產(chǎn)xxxx.framework


圖六

7.在product中就可以看到生成的framework,通過show in finder就可以找到生成的工具
圖七

8.如果要編譯release庫,請在EditScheme中編輯


圖八

在這里選擇想要的模式
圖九

9.在這里選擇靜態(tài)庫,我這邊選擇是static Library
圖十

正常情況下是可以編譯生成framework,然后接下來怎么提供給第三方用。

1.直接把xxx.framework拖入Frameworks文件夾,或者在Build Phases -> Link Binary With Libraries -> + -> Add Other ,選中對應(yīng)的framework


圖十一
圖十二

2.然后直接build,發(fā)現(xiàn)各種報錯,主要是引用第三方找不到,原因就是framework沒有包含第三方的工程,這里我們需要在podfile中去把我們之前引用的pod文件加入需要的工程中,這樣我們的framework就可以通過工程pod引入第三方關(guān)聯(lián)到第三方(這個我覺得比較不科學(xué),不那么實(shí)用,但是目前也算是一種解決方式)


圖十三

3.這時候在編譯,正常是可以通過了。

4.然后引入后可能發(fā)現(xiàn)找不到framework的類,即使把文件暴露到public中

接下來Archive發(fā)布版本


圖十四

如果代碼中要全Enable bitcode,這時候會發(fā)現(xiàn),包not full bitcode的錯誤,這是因為我們的framework沒有支持,在網(wǎng)上搜索發(fā)現(xiàn)是把這個設(shè)置為NO


圖十五

但是我們就是需要設(shè)置為yes,這時候怎么處理呢?
這時候需要把我們的庫設(shè)置為支持bitcode的

1.首先要把Mach-O Type設(shè)置為Static Library


圖十六

2.其次,公開的framework,class都是必須public,其中很多用到的參數(shù)對象,枚舉,結(jié)構(gòu)體,都要是public,不然第三方引用是用不到的,但是可以通過封裝去規(guī)避,記得在Build Phases中把暴露的類引導(dǎo)放到Headers public 中

3需要在 Build Settings -> Deployment 中打開 DEPLOYMENT_POSTPROCESSING = YES,
設(shè)置 STRIP_STYLE 為 Debugging Symbols,
Build Settings -> Compiler Flags添加 -fembed-bitcode 參數(shù)。

圖十七
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容