參考文章:http://my.oschina.net/leejan97/blog/284193
首先不得不說,這篇文章寫得挺好的,但是還是讓我廢了一番功夫,忽略了一個問題,現(xiàn)在我就寫下來創(chuàng)建靜態(tài)庫的步驟,以備自己將來翻閱,也希望有助于像我一樣的新手,可以節(jié)省一些時間。
1、創(chuàng)建Static Library,點(diǎn)擊File--> New --> Target(如圖1.1和1.2)


2、創(chuàng)建了靜態(tài)庫Static Library之后,Xcode自動為我們創(chuàng)建了JJShakeText.h/.m文件(如圖2.1)

3、編譯項目,生成對應(yīng)的靜態(tài)庫.a文件(我的問題就是出現(xiàn)在這一步,Mark一下)
編譯的時候,記得選上面的項目是JJShakeText(當(dāng)然你的是什么名字的,就選對應(yīng)的就好)

然后用模擬器環(huán)境和真機(jī)環(huán)境都編譯一下,紅色的libJJShakeText.a文件就變成黑色了(如圖3.2 和 3.3)


4、合并靜態(tài)庫
針對真機(jī)和模擬器的靜態(tài)庫文件只能在一個平臺下面使用,好在我們可以將真機(jī)和模擬器上面的靜態(tài)庫文件合并成一個在真機(jī)和模擬器都可以使用的靜態(tài)庫文件,通過在終端輸入命令即可完成該目的,

完整的命令:
lipo -create /Users/doudou/Library/Developer/Xcode/vedData/JJPickView-eqviycrqcwweiretrodyzdijhulx/Build/Products/Debug-iphoneos/libJJShakeText.a /Users/doudou/Library/Developer/Xcode/DerivedData/JJPickView-eqviycrqcwweiretrodyzdijhulx/Build/Products/Debug-iphonesimulator/libJJShakeText.a -output /Users/doudou/Desktop/libJJShakeText.a
這個是自己的文件路徑,改成相應(yīng)的就好了
這里可能出現(xiàn),真機(jī)可以,但是模擬器不能使用,或者只能使用一個的情況,現(xiàn)在我分析一下原因和解決方法。
然后通過下面命令來查看libMtimeLibrary.a信息
命令:lipo -info libMtimeLibrary.a
顯示:
cashmatoMacBook-Pro:Debug-iphonesimulator cash$ lipo -info libMtimeLibrary.a
input file libMtimeLibrary.a is not a fat file
Non-fat file: libMtimeLibrary.a is architecture: i386
i386是mac上的架構(gòu)。
繼續(xù)通過命令來查看? lipo -info libMtimeLibrary.a,
顯示:
cashmatoMacBook-Pro:Debug-iphoneos cash$ lipo -info libMtimeLibrary.a
input file libMtimeLibrary.a is not a fat file
Non-fat file: libMtimeLibrary.a is architecture: armv7
armv7是iOS上的架構(gòu)。
到這里我們也明白了,為什么一個在真機(jī)上可以使用,一個只能在模擬器上使用了吧!
最后我們要做的就是要讓這個libMtimeLibrary.a文件同時有i386和armv7信息,這樣就是一個通用的靜態(tài)庫文件了。
問題是還會報錯,還是會報下面的錯,或者是x86_64,原因是,需要用模擬器iPhone 5 來生成有i386 的.a文件,用模擬器iPhone 5s 來生成有x86_64的.a文件,用真機(jī)編譯來生成armv7的.a文件,好了,現(xiàn)在將3個文件用上述的合成方法,分兩次合成到一起,再用“l(fā)ipo -info +路徑”查看一下,就是看到新的.a文件包含:armv7 i386 x86_64了(如圖4.4)



5、使用靜態(tài)庫文件
這時候我們就可以使用自己創(chuàng)建、編譯生成的靜態(tài)庫文件了,將UITextField+Shake.h文件和桌面上面的liJJShakeText.a文件拖到想要使用的項目中,如下圖的目錄結(jié)構(gòu),(如圖5.1)

6、現(xiàn)在已經(jīng)可以正常使用了.
其實參考文章寫得挺好的,我只是在第一步和第三步有點(diǎn)不一樣的地方,我就重新寫了一下,畢竟版本不同了,給需要的節(jié)省一丁丁時間也好。