封裝靜態(tài)庫(kù)后饶辙,會(huì)生成三個(gè)文件夾:
Debug-iphonesimulator
Release-iphoneos
Release-iphonesimulator
選擇哪個(gè)導(dǎo)入到項(xiàng)目里,就顯得無從下手死陆。
如果我們選擇Release-iphoneos毅否,在模擬器運(yùn)行显拳,就會(huì)報(bào)錯(cuò):
Building for iOS Simulator, but the linked framework 'x.framework' was built for iOS.
如果我們選擇Release-iphonesimulator窿克,在模擬器運(yùn)行,就會(huì)報(bào)錯(cuò):
Building for iOS, but the linked framework 'x.framework' was built for iOS Simulator.
很多文章的解決辦法是更改編譯配置:
雖然可以編譯通過髓涯,但是會(huì)出現(xiàn)一個(gè)警告:
ignoring file x/x/x missing required architecture x86_64 in file x/x/x (2 slices)
這個(gè)警告也是告訴你只支持真機(jī)袒啼,不支持模擬器,不要再試圖解決這個(gè)警告了纬纪,因?yàn)橐婚_始就錯(cuò)了蚓再。
我們要的,是一個(gè)既支持真機(jī)也支持模擬器運(yùn)行的framework包各,關(guān)鍵點(diǎn)就在于framework里面的空白文件摘仅,例如你的framework叫“ABC.framework”,那么你會(huì)在framework里面看到一個(gè)叫ABC的空白文件,我們接下來就需要搞一下它问畅。
首先介紹兩個(gè)命令行:
lipo -i xxx.a
lipo -create x/x/x x/x/x -output x/x/x
第一個(gè)命令表示查看庫(kù)文件包含的CPU架構(gòu):
Architectures in the fat file: x/x/x are: armv7 arm64
Architectures in the fat file: x/x/x are: i386 x86_64
上面的兩個(gè)輸出分別表示支持真機(jī)和模擬器
第二個(gè)命令的作用是合成一個(gè)庫(kù)的兩個(gè)不同CPU架構(gòu)的庫(kù)文件為一個(gè)娃属,比如我們的ABC.framework
lipo -create {真機(jī)文件目錄/ABC} {模擬器文件目錄/ABC} -output ABC
那么在你的目錄下就會(huì)多一個(gè)ABC文件,這就是合并后的文件护姆,你只需要替換掉Release-iphoneos或者Release-iphonesimulator里面ABC.framework下面的ABC為合并后的ABC文件矾端,你的靜態(tài)庫(kù)就會(huì)同時(shí)支持模擬器和真機(jī)了。