Package.resolved file is corrupted or malformed

通過SPM來管理swift開發中第三方庫是首選方案,至于為何是首選,有很多人分享,這里就不贅述了。今天分享一個使用SPM遇到的問題,花了我2小時,感覺需要發出來能夠對他人有所裨益。

背景

幫一個海外的朋友開發一款SwiftUI的應用,順便一起學習下SwiftUI開發。我們是通過github來管理項目,我本地使用Github Desktop作為git工具。(github官方出的工具比較香,尤其是對git不是太熟悉的同學,我選擇用Desktop是因為sourceTree 在使用翻墻工具以后,會出現 confuse 的錯誤,使用Desktop就可以絲滑的clone、update。當然sourceTree 最后也解決了confuse的問題,這需要另外開一篇了)
在早上pull了最新的代碼,對方主要的更新就是 使用了SPM添加了Alamofire。由于本地沒有什么改動,于是就要run,結果 提示 找不到
‘Alamofire’,對方用的好好的,怎么pull到我這邊就出錯了呢?第一時間去查看packageDependencises,結果就發現??


問題樣子

過程

看到這個屌樣子,就知道是alamofire 雖然在dependencise中,但是沒有下載到本地項目中,編譯鏈接不到文件,這個在cocoapods中就是pod install 了,但是這里是SPM呀。怎么實現reload package呢?google大法上也沒有找到,找到的大神可以交流下。

然后就想到 右鍵 PackageDependencies 試了Reset /Resolve,然鵝沒屌用,當然也試過clean Xcode,重啟大法等等


image.png

不能忍,大不了刪掉,我重新添加Package,活人不能。。于是就出現了
42031660700937_.pic.jpg

尷尬了,多試幾次,依然是這個問題,確定不是網絡問題了,意思Package.resolved,出問題了,導致packageDependencise不工作了,正常情況下,pull了以后,是會自動下載pages的。

于是就開啟google大法,看到了Stackoverflow 看了一下就是尋找package.resolved文件,然后移動位置,還有說重啟大法的,總之沒看太明白,于是就想到官方論壇然后看到 Xcode 13.2.1 Could not resolve package dependencies??

image.png

癥狀很像呀,竊喜。。不過藥方這么簡單嗎,我看了人家發了兩遍藥方,重點“Deleting Package.resolved”文件,結合stackOverflow看到方案,病灶應該在Package.resolved文件,那就找唄,
方案一

在finder中結果找到兩個packeage.resolved文件,刪除、clean 然后繼續添加page,結果又失敗了,同樣的錯誤提示。

這NM..
忽然想到想到我本地其他工程依然絲滑的使用PackageDependences,說明問題在這個項目中,不是xcode的bug之類的,那就在項目中找找,右鍵 yourApp.xcodeproj文件顯示包文件,看到??


image.png

還沒有那就繼續看.xcworkspace的包內容
image.png

這個突然發現了Package.resolved文件了,幸福來的突然了,有點兒不真實,是不是想到剛在finder中刪除過這個名字的文件嘛,怎么這里還有?
不管了,刪掉Package.resolved,然后+ package,竟然一氣呵成了。有點兒懵。。

突然想到stackOverflow中好像提到在項目文件中找這個文件,但是他是讓移動文件到bin文件中,然后reset PackageDependencise,最后還是蘋果官方給的簡單藥方管用呀??

總結反思

一般項目中需要改動或者刪除什么隱藏文件之類,應該在該項目中找,這是第一位的,當然也不是絕對,不過方向沒錯,縮小尋找答案的范圍。至于為何pull了項目以后,項目中的Package.resolved文件為何會損壞不可用,還沒有找到病根兒,初步猜測是和不同Xcode開發的版本有關系,有發現病根兒的大神不吝賜教呀

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容