通過(guò)SPM來(lái)管理swift開(kāi)發(fā)中第三方庫(kù)是首選方案颅围,至于為何是首選进宝,有很多人分享,這里就不贅述了蝗茁。今天分享一個(gè)使用SPM遇到的問(wèn)題醋虏,花了我2小時(shí),感覺(jué)需要發(fā)出來(lái)能夠?qū)λ擞兴砸妗?/p>
背景
幫一個(gè)海外的朋友開(kāi)發(fā)一款SwiftUI的應(yīng)用哮翘,順便一起學(xué)習(xí)下SwiftUI開(kāi)發(fā)颈嚼。我們是通過(guò)github來(lái)管理項(xiàng)目,我本地使用Github Desktop作為git工具饭寺。(github官方出的工具比較香阻课,尤其是對(duì)git不是太熟悉的同學(xué),我選擇用Desktop是因?yàn)閟ourceTree 在使用翻墻工具以后艰匙,會(huì)出現(xiàn) confuse 的錯(cuò)誤限煞,使用Desktop就可以絲滑的clone、update员凝。當(dāng)然sourceTree 最后也解決了confuse的問(wèn)題署驻,這需要另外開(kāi)一篇了)
在早上pull了最新的代碼,對(duì)方主要的更新就是 使用了SPM添加了Alamofire。由于本地沒(méi)有什么改動(dòng)旺上,于是就要run瓶蚂,結(jié)果 提示 找不到
‘Alamofire’,對(duì)方用的好好的宣吱,怎么pull到我這邊就出錯(cuò)了呢窃这?第一時(shí)間去查看packageDependencises,結(jié)果就發(fā)現(xiàn)??
過(guò)程
看到這個(gè)屌樣子征候,就知道是alamofire 雖然在dependencise中杭攻,但是沒(méi)有下載到本地項(xiàng)目中,編譯鏈接不到文件倍奢,這個(gè)在cocoapods中就是pod install 了朴上,但是這里是SPM呀。怎么實(shí)現(xiàn)reload package呢卒煞?google大法上也沒(méi)有找到痪宰,找到的大神可以交流下。
然后就想到 右鍵 PackageDependencies 試了Reset /Resolve畔裕,然鵝沒(méi)屌用衣撬,當(dāng)然也試過(guò)clean Xcode,重啟大法等等
尷尬了,多試幾次岂丘,依然是這個(gè)問(wèn)題陵究,確定不是網(wǎng)絡(luò)問(wèn)題了,意思Package.resolved,出問(wèn)題了奥帘,導(dǎo)致packageDependencise不工作了铜邮,正常情況下,pull了以后寨蹋,是會(huì)自動(dòng)下載pages的松蒜。
于是就開(kāi)啟google大法,看到了Stackoverflow 看了一下就是尋找package.resolved文件已旧,然后移動(dòng)位置秸苗,還有說(shuō)重啟大法的,總之沒(méi)看太明白评姨,于是就想到官方論壇然后看到 Xcode 13.2.1 Could not resolve package dependencies??
癥狀很像呀难述,竊喜萤晴。。不過(guò)藥方這么簡(jiǎn)單嗎胁后,我看了人家發(fā)了兩遍藥方店读,重點(diǎn)“Deleting Package.resolved”文件,結(jié)合stackOverflow看到方案攀芯,病灶應(yīng)該在Package.resolved文件屯断,那就找唄,
在finder中結(jié)果找到兩個(gè)packeage.resolved文件侣诺,刪除殖演、clean 然后繼續(xù)添加page,結(jié)果又失敗了年鸳,同樣的錯(cuò)誤提示趴久。
這NM..
忽然想到想到我本地其他工程依然絲滑的使用PackageDependences,說(shuō)明問(wèn)題在這個(gè)項(xiàng)目中搔确,不是xcode的bug之類的彼棍,那就在項(xiàng)目中找找,右鍵 yourApp.xcodeproj文件顯示包文件膳算,看到??
還沒(méi)有那就繼續(xù)看.xcworkspace的包內(nèi)容
這個(gè)突然發(fā)現(xiàn)了Package.resolved文件了座硕,幸福來(lái)的突然了,有點(diǎn)兒不真實(shí)涕蜂,是不是想到剛在finder中刪除過(guò)這個(gè)名字的文件嘛华匾,怎么這里還有?
不管了机隙,刪掉Package.resolved蜘拉,然后+ package,竟然一氣呵成了有鹿。有點(diǎn)兒懵诸尽。。
突然想到stackOverflow中好像提到在項(xiàng)目文件中找這個(gè)文件印颤,但是他是讓移動(dòng)文件到bin文件中,然后reset PackageDependencise穿肄,最后還是蘋(píng)果官方給的簡(jiǎn)單藥方管用呀??
總結(jié)反思
一般項(xiàng)目中需要改動(dòng)或者刪除什么隱藏文件之類年局,應(yīng)該在該項(xiàng)目中找,這是第一位的咸产,當(dāng)然也不是絕對(duì)矢否,不過(guò)方向沒(méi)錯(cuò),縮小尋找答案的范圍脑溢。至于為何pull了項(xiàng)目以后僵朗,項(xiàng)目中的Package.resolved文件為何會(huì)損壞不可用赖欣,還沒(méi)有找到病根兒,初步猜測(cè)是和不同Xcode開(kāi)發(fā)的版本有關(guān)系验庙,有發(fā)現(xiàn)病根兒的大神不吝賜教呀