iOS開發(fā)-創(chuàng)建自己的Framework、SDK

方案一:參考:最詳細(xì)的Framework創(chuàng)建步驟

Bug - 配置完之后需要處理一下步驟

  1. 問題一:報(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ù)支持i386x86_64兩架構(gòu);
    編譯真機(jī)靜態(tài)庫(kù)支持armv7、arm64兩架構(gòu);
    使用lipo -create -output命令可以將兩個(gè)庫(kù)合并成一個(gè)支持模擬器和真機(jī)i386x86_64、armv7、arm64四種架構(gòu)的胖子庫(kù)。
    XCode12編譯的模擬器靜態(tài)庫(kù)也支持了arm64,導(dǎo)致出現(xiàn)真機(jī)庫(kù)和模擬器庫(kù)不能合并的問題。

    解決方法:

    1. 如果有靜態(tài)庫(kù)工程:
      需要在SDK的項(xiàng)目中,打開BuildSetting -> Excluded Architectures :添加Any iOS Simulator SDK,并賦值arm64;
    2. 如果手里只有.a或.framework文件:
      使用lipo remove命令將模擬器庫(kù)的arm64架構(gòu)移除:$ lipo XXX.a -remove arm64 -output XXX.a
    截屏2021-01-08 下午3.17.15.png
  1. 問題二:靜態(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ò)。
    解決辦法:同問題一;

  1. 問題三:示例App跟SDK使用同一個(gè)workspace:按照方案一配置腳本,編譯名為Frameworktarget時(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
  1. 問題四:報(bào)錯(cuò):Multiple commands produce
    分別修改xxxAPPxxxSDKxxx.workspace的項(xiàng)目設(shè)置:打開Xcode頂部菜單:File -> Workspace SettingsProject Settings -> Build System:改為Legacy Build System(Deprecated);

    截屏2021-01-08 下午4.08.09.png
  1. 問題五:項(xiàng)目模擬器運(yùn)行報(bào)錯(cuò):building for iOS Simulator, but linking in object file built for iOS
    Build SettingsUser-Defined里是否有個(gè)VALID_ARCHS。看看是否有x86_64架構(gòu)。沒有的話填上。

  2. 問題六:報(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è)方法即可;

  1. 問題七:
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容