方案一:參考:最詳細(xì)的Framework創(chuàng)建步驟
Bug - 配置完之后需要處理一下步驟
-
問題一:報(bào)錯(cuò):
libxxx.a have the same architectures (arm64) and can't be in the same fat output file:(Xcode12 之后會(huì)報(bào)這個(gè)錯(cuò))XCode12之前:
編譯模擬器靜態(tài)庫(kù)支持i386、x86_64兩架構(gòu);
編譯真機(jī)靜態(tài)庫(kù)支持armv7、arm64兩架構(gòu);
使用lipo -create -output命令可以將兩個(gè)庫(kù)合并成一個(gè)支持模擬器和真機(jī)i386、x86_64、armv7、arm64四種架構(gòu)的胖子庫(kù)。
XCode12編譯的模擬器靜態(tài)庫(kù)也支持了arm64,導(dǎo)致出現(xiàn)真機(jī)庫(kù)和模擬器庫(kù)不能合并的問題。解決方法:
- 如果有靜態(tài)庫(kù)工程:
需要在SDK的項(xiàng)目中,打開BuildSetting->Excluded Architectures:添加Any iOS Simulator SDK,并賦值arm64; - 如果手里只有.a或.framework文件:
使用lipo remove命令將模擬器庫(kù)的arm64架構(gòu)移除:$ lipo XXX.a -remove arm64 -output XXX.a;
截屏2021-01-08 下午3.17.15.png - 如果有靜態(tài)庫(kù)工程:
-
問題二:靜態(tài)庫(kù)工程編譯模擬器庫(kù)報(bào)錯(cuò):
ld: in XXX.a(XXXXXXX.o), building for iOS Simulator, but linking in object file built for iOS, for architecture arm64:這個(gè)是出在靜態(tài)庫(kù)工程中包含其他已經(jīng)編譯好的靜態(tài)庫(kù),且該靜態(tài)庫(kù)是真機(jī)模擬器合并胖子庫(kù)(支持四種架構(gòu))。
由于這個(gè)胖子庫(kù)只支持真機(jī)的arm64但不支持模擬器arm64,所以出現(xiàn)了以上報(bào)錯(cuò)。
解決辦法:同問題一;
-
問題三:示例App跟SDK使用同一個(gè)workspace:按照方案一配置腳本,編譯名為
Framework的target時(shí),會(huì)報(bào)錯(cuò),如下圖:截屏2021-01-07 上午12.01.28.png// 報(bào)錯(cuò)信息: error: /Applications/Xcode-11-7.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: can't locate file for: -lPods-CommonPods-DemoSDK error: /Applications/Xcode-11-7.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: file: -lPods-CommonPods-DemoSDK is not an object file (not allowed in a library)解決方法是:刪除SDK下的
Frameworks里面的libPods-xxxxx.a,再編譯即可成功但是如果更新Pod,再編譯就會(huì)重新生成
libPods-xxxxx.a,所以每次更新Pod之后,都需要再次刪除libPods-xxxxx.a;(原因未知,有知道的小伙伴可以留言分享給大家。)
截屏2021-01-07 上午12.05.18.png
-
問題四:報(bào)錯(cuò):
Multiple commands produce:
分別修改xxxAPP、xxxSDK、xxx.workspace的項(xiàng)目設(shè)置:打開Xcode頂部菜單:File->Workspace Settings或Project Settings->Build System:改為Legacy Build System(Deprecated);截屏2021-01-08 下午4.08.09.png
問題五:項(xiàng)目模擬器運(yùn)行報(bào)錯(cuò):
building for iOS Simulator, but linking in object file built for iOS:
在Build Settings里User-Defined里是否有個(gè)VALID_ARCHS。看看是否有x86_64架構(gòu)。沒有的話填上。-
問題六:報(bào)錯(cuò):
/lipo: can't open input file: libDemoSDK.a (No such file or directory),如下圖:截屏2021-01-08 下午4.33.08.png解決方法:SDK需要有內(nèi)容,才能編譯成功,隨便給SDK寫幾個(gè)方法即可;
- 問題七:




