【iOS】iOS FrameWork的制作

注意:如果創建的framework中使用了category類,則在使用framework的項目配置中【Other Linker Flags】需要添加參數【-ObjC]或者【-all_load】。從Xcode5開始用到系統自帶的框架不用導入框架, 但是如果是在靜態庫中用到了這些框架還是必須導入-ObjC這個flag告訴鏈接器把庫中定義的Objective-C類和Category都加載進來。這樣編譯之后的app會變大(因為加載了其他的objc代碼進來)。但是如果靜態庫中有類和category的話只有加入這個flag才行。-all_load這個flag是專門處理-ObjC的一個bug的。用了-ObjC以后,如果類庫中只有category沒有類的時候這些category還是加載不進來。變通方法就是加入-all_load或者-force-load。-all_load會強制鏈接器把目標文件都加載進來,即使沒有objc代碼。-force_load在xcode3.2后可用。但是-force_load后面必須跟一個只想靜態庫的路徑。

如果創建的framework類中使用了.dylib或者.tbd,首先需要在實際項目中導入.dylib或者.tbd動態庫,然后需要設置【Allow Non-modular Includes ....】為YES,否則會報錯"Include of non-modular header inside framework module"。

Build Active Architecture Only修改為NO,否則生成的靜態庫就只支持當前選擇設備的架構。

Dead Code Stripping設置為NO
Strip Debug Symbol During Copy 全部設置為NO
Strip Style設置為Non-Global Symbols

1、打開Xcode,新建工程。不要選擇“Application”,選擇“Framework & Library”。選擇第一個,然后Next。

在TARGETS下選中工程,在Build Settings下更改幾個參數。
在 Building Setting 中設置一下 Architectures,在原有基礎上添加一行 armv7s

2.png
1.png

5、設置 Headers 和 Resources

在TARGETS -> Build Phases -> Headers 中添加頭文件,Public 中添加公開的頭文件
在TARGETS -> Build Phases -> Copy Bundle Resources 中添加framework中使用的bundle資源文件

問題:[bundle打包自動轉換tiff格式的處理方法]

png圖片如果用了@2x 、@3x會自動轉換成tiff格式的圖片。設置不轉換的方法是 在bundle的target中 Build Settings 里的 COMBINE_HIDPI_IMAGES 設置為NO

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容