項目打包成framework靜態庫

一.采用手動導入第三方SDK方式
  • 1.創建framework,刪除自帶的.h .m文件


  • 2.在buid setting 搜索 mach

將Mach-O Type 改為 Static Library(靜態庫)類型

  • 3.Build Active Architeture only 改為NO
  • 4.把用到的文件及文件夾拖到里面,第三方文件/庫除外,(需要在使用封裝庫的項目中重新配置info.plist),添加圖片資源-新建一個.bundle資源,把圖片、sb、xib放到.bundle資源里面,修改圖片路徑

??注意AppDelegate 、info.plist和ViewController不要拖,AppDelegate里面的方法弄成暴露接口,在項目中的AppDelegate調用
3種方式處理.bundle和.framework

?(a)、(b)上架打包失敗,且copy files中添加framework
(a)前提.bundle庫拖到了建立的framework項目中,建立的framework的文件里面用到圖片的路徑就得修改為:xxx.framework/xxx.bundle/a.png
(b)前提.bundle庫拖到了建立的framework項目中,并且打完靜態庫之后又把.bundle庫拖到了Headers文件里暴露給使用者,建立的framework的文件里面用到圖片的路徑就得修改為:xxx.framework/Headers/xxx.bundle/a.png
?(c)??????推薦:前提.bundle庫不拖到建立的framework項目中或者不把add to targets選中見下條5,最后把.bundle庫和.framework庫一起提供給使用者,文件里面用到圖片的路徑就得修改為:xxx.bundle/a.png

  • 5.手動導入第三方庫/文件(便于方便可以把第三方SDK文件夾全部拖進去,包括bundle等等),但是不要添加到該framework上面
  • 6.導入第三方靜態庫之后再link依賴的系統庫和第三方framework等庫文件,像這樣,deployment target選最低
  • 7.若用到.pch文件,重新修改.pch 文件路徑,搜索prefix header 修改路徑:例如$(SRCROOT)/$(PROJECT_NAME)/VideoHeader.pch
  • 8.選擇需要公開的頭文件,將頭文件暴露出去,供外界使用,所有的編譯文件都在Project中,需要右擊添加到public里面
??注意公開的頭文件中,#import的其他類也要公開,添加到public中,如果不想公開,就在頭文件用@class的方式,在對應的.m中用#import方式
  • 9.選中真機和模擬器分別編譯一下
  • 10.合并真機和模擬器生成的二進制文件

打開終端 輸入 lipo -create第一個framework文件下二進制文件的絕對路徑 第二個framework文件下二進制文件的絕對路徑 -output 最終的二進制文件路徑 然后enter鍵

  • 11.生成的二進制文件替換原先的真機生成或模擬器生成的二進制文件,然后相應的其所在的.framework文件就是最終的framework,將其導入別的工程使用時這個工程需要引進制作framework時用到的第三方SDK
二.使用cocoapods導入到framwork時注意事項,其他都和手動導入一樣,當在模擬器編輯時候會報錯,

選擇 Build Settings ,在 Architectures 下增加 armv7s 。真機下不許改動,如果改動編譯會報錯


三.新項目使用framework(對應上面的abc)
  • 1.引用xxx.framework、導入#import <xxx/xxx.h>、配置info.plist
  • 2.xxx.framework中依賴的第三方庫和系統庫,那么需要在Linked Frameworks and Libraries里面添加
    例如:faceface.framework依賴IDLFaceSDK.framework,而IDLFaceSDK.framework依賴libc++.tbd,libc++.tbd必須在項目中添加,否則報錯!


  • 3.??若xxx.framework中有分類報錯的話,則按下圖修改項目配置,在項目中Build Settings中搜索linker,在linking中的Other Linker Flags中輸入-ObjC,如圖
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容