第一次要制作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ù)。
