第一種方法:直接新建乙個工程。
1、新建專案-> 選擇 「cocoa touch static library」
2、新增庫需要包含的源**,將你工程裡的**新增到打靜態庫工程裡:
3、配置一下工程:
4、選擇需要暴露出來的 .h 檔案, .m 檔案會自動編譯到 .a 檔案中:
需要暴漏出的檔案類在這裡設定:
引入的網路框架設定:(有些會自動引入,有些需要手動引入,根據編譯報錯,可以檢查。)
5、編譯前檢查一下是debug模式還是release模式,選擇release模式:
分debug和release模式:
debug-iphoneos 資料夾裡面的東西是用在真機上的
debug-iphonesimulator 資料夾裡面的東西是用在模擬器上的
如果 scheme 是 release 模式,生成的資料夾就以 release 開頭
6、選擇真機裝置,然後 command+b 編譯, libspcustomerserverse.a 檔案從紅色變為黑色
(注意建議先選擇真機,這樣才會變色,如果先選擇模擬器,那麼編譯通過了,但是不會由紅變黑,實際上是已經編譯了模擬器的,只是給人一種假象,好像沒編譯一樣,還是紅色的)
7、選擇模擬器,建議選擇iphone6以上的(選擇高階點的,低階的也可用,若選了低階的,高階的有可能就不適配了)然後依然 command+b 編譯,模擬器和真機環境下用的 .a 檔案是分開的。
8、合併模擬器(release-iphonesimulator)和真機(release-iphoneos)下的.a,以便支援真機和模擬器,合併後的.a大小大約是不合併的2倍左右。
show in finder
合併步驟:
舉例:1、新建資料夾:"dabao";
2、將上述的release-iphonesimulator和release-iphoneos兩個檔案拷貝進"dabao"資料夾。
3、開啟終端,執行以下操作:
一、在終端輸入:lipo -create
二、將release-iphonesimulator下的.a拖進終端,輸入乙個空格;
三、繼續將release-iphoneos 下.a 拖進終端,輸入空格;
四、繼續輸入:-output ,打個空格;
五、輸入合併後的.a所要放的檔案路徑(這裡舉例依然放在「dabao」這個資料夾下,則我的電腦的路徑為:/users/ntalker-zhou/desktop/dabao/libspcustomerserversesdk.a),回車,在相應的檔案下即可生成乙個.a,該.a即是合併後的.a
4、檢查合併後的.a是不是滿足所有要求,依然在終端進行以下操作:
一、在終端輸入:lipo -info ;
二、將合併後的.a拖進終端 ,回車;
(注意:終端每一步記得要用空格隔開,否則會出錯哦!)
這樣.a 就成功製作出了,只需要將暴漏的標頭檔案以及製作的.a放入工程,別人就可以使用你的程式了,再也不用擔心原始碼暴漏或別人隨意修改你的**了,不過如果有資源,資源是不能打進.a的,需要在外面新增的哦。
(有時候為了編譯通過,根據需要,需要設定一下工程配置比如我需要配置xml等…
第二種方法:在原有工程上操作,開啟已存在的工程,然後新增乙個要做成.a靜態庫的 target 在此,簡單命名為mylibrary
此處可以看到,新建的target 裡面同時具有 mylibrary.h mylibrary.m 這個咩有用,可以直接刪除。
然後就是怎麼弄自己的靜態庫了,你有一些.h .m 檔案需要打成靜態庫,先把你需要打成靜態庫的東西複製乙份,放好,然後把你工程裡的那乙份.h .m 刪除,然後把你剛才複製的那乙份拖進工程,選擇targets 裡面的工程名和靜態庫名稱。即兩個對號都打上。然後新增上。下圖是建立新的.h .m的操作,等同於直接add操作。
然後選擇 靜態庫
同時 edit sheme
然後 run 就可以看到 原來的紅色的顯示,變成了正常的
iOS開發之靜態庫 a的製作教程
簡介 什麼是庫?庫是程式 的集合,是共享程式 的一種方式 根據源 的公開情況,庫可以分為 2 種型別 開源庫公開源 能看到具體實現 比如 sdwebimage afnetworking 閉源庫不公開源 是經過編譯後的二進位制檔案,看不到具體實現 主要分為 靜態庫 動態庫 靜態庫和動態庫 靜態庫和動態...
iOS開發之靜態庫 a的製作教程
庫是程式 的集合,是共享程式 的一種方式 根據源 的公開情況,庫可以分為 2 種型別 公開源 能看到具體實現 比如 sdwebimage afnetworking 不公開源 是經過編譯後的二進位制檔案,看不到具體實現 主要分為 靜態庫 動態庫 靜態庫 a 和 framework 動態庫 dylib ...
iOS開發之靜態庫 a的製作教程
庫是程式 的集合,是共享程式 的一種方式 根據源 的公開情況,庫可以分為 2 種型別 公開源 能看到具體實現 比如 sdwebimage afnetworking 不公開源 是經過編譯後的二進位制檔案,看不到具體實現 主要分為 靜態庫 動態庫 靜態庫 a 和 framework 動態庫 dylib ...