方案一:參考:最詳細(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è)方法即可秕重;
- 問題七: