好久沒有寫文章了,最近公司用到了制作靜態庫相關的知識,在實際應用中總結了一些經驗,寫下來和大家分享一下,有什么不足的地方,望大家提意見以便更好的改進。
文章主要介紹
1、靜態庫制作規范
2、靜態庫制作流程
3、靜態庫打包bundle文件
4、合并靜態庫真機和模擬器文件
靜態庫應用場景
在工作中,我們會集成一些第三方的靜態庫,我們的開發的功能也會提供給其他人使用,提供給別人時,我們不想暴露自己的源碼,那么這就要求我們對自己的源代碼進行處理,Xcode提供了打包靜態庫的功能,下面我給大家一步步介紹下如何制作靜態庫
1、靜態庫制作規范
靜態庫是提供給其他人使用的,最好做到只提供入口方法,做到一句代碼調用的目的,如達不到一句代碼調用目的,只暴露主要方法
2、.a靜態庫制作流程
1>創建一個項目,選擇Cocoa Touch Static Library,如圖所示
2>創建完成如圖所示
3>將提前準備的項目文件及項目資源導入到SDK制作工程中
4>添加New Header Phase
5>添加完成如圖所示
6>將制作靜態庫需要的.h文件添加到Project中,將靜態庫調用的頭文件添加到Public中
7><靜態庫打包bundle文件>由于演示制作的靜態庫包含圖片和xib文件,因此為了規范,我們需要把圖片和xib文件添加到bundle中,如圖添加給靜態庫添加bundle資源包
8>創建好之后,將圖片和xib文件添加到Copy Bundle Resources中
9>由于.bundle文件屬于macOX類型,所以我們需要改一些配置來適配iOS,如圖所示
TARGETS ->選擇bundle -> Build Settings ->Base SDK ->選擇Latest iOS (iOS 11.2)
設置Build Setting 中的COMBINE_HIDPI_IMAEGS 為NO,否則Bundle中的圖片就是tiff格式了。
作為資源包,僅僅需要編譯就好,無需安裝相關配置,設置Skip Install為YES,同樣需要刪除安裝路徑Installation Dirctory的值
到此為止bundle文件的設置完成
10> 打包工程和資源文件
11>找到源文件路徑,如下圖所示,到此靜態庫制作完成,將.libStaticSDK.a和source.bundle和頭文件StaticSDK.h導入到項目中即可使用
3、合并靜態庫真機和模擬器文件
我們在制作靜態庫的時候,編譯會產兩個.a文件,一個適用于模擬器的,一個是用于真機的,為了開發方便我們可以使用終端命令將.a文件進行合并
lipo -create XXX/模擬器.a路徑 XXX/真機.a路徑 -output 合并后的文件名稱.a
4-1、注意點,由于資源文件在Bundle文件中因此在使用時需注意,以下我舉兩個例子,一個是加載圖片,一個是加載xib文件
4-2注意事項:刪除bundle中plist中圖中的兩項,防止影響Appstore上架報錯