注:截圖雖然指向UM,但我想該解決方法適用於任何情況
用git管理碰到好惡心的問題,某個同事導入um,我更新後目錄中整個um的文件不存在(但build phases - copy bundle resources存在),add files後,又刪了build phases - copy bundle resources中重疊的文件,結果就出現這個問題。
開始以爲是string缺失了,但是奇怪的是目錄、build - copy bundle resources都是正常的,爲什麼會出現這個問題捏?
結果我刪了文件,或者又刪了resources,然後又添加回來,各種來回刪除添加,都沒辦法,如果你也到了這一步,可以繼續往下看。
google了一些,沒有找到合適的解決,最後看到一個人說可能是絕對路徑問題,要去project.pbxproj把 'xxx.strings'文件的 <Absolute>改爲 <group>,我看了下,但都是<group>呀,頓時以爲和我的問題不是一個問題,後來據此靈機一動,便想到了解決方法。(很遺憾忘記在哪裏看到的,不然引用下鏈接)
一、首先把 'xxx.strings '(也不一定是.strings文件)從工程移掉,然後確保在build phases - copy bundle resources也不存在。
二、到finder找到項目目錄,用Sublime Text類的應用打開xxx.xcodeproj,如圖(其他 - 選擇Sublime Text)
打開後的效果是這樣的:
選中左側的project.pbxproj文件,我們這次解決問題就靠它了。
三、在文本搜索你出現問題的文件名( no such file.),比如我出現問題的是UMSocialLocalizable.strings,那麼搜索UMSocialLocalizable.strings會發現有很多地方存在。
這個時候你應該知道原因了,我明明在工程裏都刪掉'xxxx.strings'了,爲什麼還會存在呢,所以機智的我嘗試把'xxxx.strings'在整個project.pbxproj裏完全清除掉。
四、通過逐步搜索,你會發現,project.pbxproj的文本有點類似於json格式,所以我們在刪除對應的'xxxx.strings'的節點的時候,一定要注意,只能刪除對應的節點,一定要注意符號(花括號,逗號),千萬不要多刪漏刪,不然肯定出問題的。大致如下截圖
五、打開項目,重新build,如果成功就沒啥問題了,然後重新把有問題的'xxxx.strings'導入到工程裏,再次build,成功!
希望能給你帶來幫助,生活愉快:)