//在Image Xcassets中appicon的名字已改成AppIcon~x~.png
NSDictionary *infoPlist = [[NSBundle mainBundle] infoDictionary];
NSString *icon = [[infoPlist valueForKeyPath:@"CFBundleIcons.CFBundlePrimaryIcon.CFBundleIconFiles"] lastObject];
UIImage *shareImage= [UIImage imageNamed:icon];
iOS打包靜態庫,以及靜態庫包含圖片時怎么打包
Xcode 8.3.1
閑話少說直接上圖:

1.創建靜態庫 : 新建一個工程, 此時選擇Cooca Touch Static Library
創建Library
2. 我隨意將工程命名為 Library, 創建好后應該是這樣的

工程里自動生成一對 .h 和.m的文件, 此時 libLibrary.a 顯示的是紅色
3.實現相關代碼, 我只是實現了一個打印 log 的方法, 並暴露給外界調用


4. 一般靜態庫用於發布, 所以要編輯一下 Scheme, 修改為Release 狀態

5.暴露.h 文件

選擇 New Headers Phase 之后會出現 :

展開 Headers --> 點擊左下角的 ➕號 出現:

選擇要暴露的.h文件, 即Library.h, 點擊 Add
6.最后一步,打包, 可以打包 真機和模擬器 靜態庫, 取決於這個地方你選擇的是真機還是模擬器

如果, 你導入了其他第三方, 並且也希望將他們的 .h 文件暴露出來 需要將 .h 文件 從 Project 移到 Public 當中, 下面以 AFN 為例, 如圖:

選擇好 真機或模擬器后 直接運行:

此時, libLibrary.a 就變成了黑色, 如果沒變,也沒問題,直接 Show in finder

首先可以看見有兩個文件夾 : Release-iphoneos 和 Release-iphonesimulator, 前者是真機下編譯的靜態包, 后者是模擬器下編譯的靜態包,注意真機測試不能用模擬器靜態包, 反之亦然.
libLibrary.a 就是我們打包好的 靜態庫, Library.h 就是暴露出來的頭文件, 見下圖 :

或者: 你運行好以后是這個樣子 :

最后, 直接將 libLibrary.a ,Library.h 拖到你所要運用 該靜態庫的 工程里, 導入Library.h 頭文件,調用方法即可
那么, 問題來了, 如果 你既想在真機上運行又想在模擬器上運行, 該怎么辦呢??????
沒錯, 可以合並,
打開終端 ,輸入 (注意空格):
lipo -create 真機版本.a靜態庫路徑 模擬器版本.a靜態庫路徑 -output 合並后的.a靜態庫路徑
lipo -create /Users/zhuyongjun/Library/Developer/Xcode/DerivedData/Library-cgfjojtxfkuotsbfqrriwyvyrtgk/Build/Products/Release-iphoneos/libLibrary.a /Users/zhuyongjun/Library/Developer/Xcode/DerivedData/Library-cgfjojtxfkuotsbfqrriwyvyrtgk/Build/Products/Release-iphonesimulator/libLibrary.a -output /Users/zhuyongjun/Library/Developer/Xcode/DerivedData/Library-cgfjojtxfkuotsbfqrriwyvyrtgk/Build/Products/libLibrary.a
合並后如圖 :

包含圖片的 靜態庫怎么打包 ?
這是需要用到bundle包了,

首先將要用到 的圖片放到文件夾里, 再給文件夾重命名為后綴帶 .bundle的名字,前面的名稱(這里是resource)隨意給,此時會提示如圖,點擊添加后,會出現一個bundle 包,顯示包內容,可以看到拖進去的圖片

將bundle包拖進靜態庫的工程,並在Library.m, 實現如下方法:

之后,運行,找到 .a 文件,步驟與不包含圖片的靜態庫一致
調用該接口,需要將圖片的 bundle 包一並添加到工程里,如

小禮物走一走,來簡書關注我