the file 'xxxx' couldn't be opened because there is no such file

来源:互联网 发布:淘宝联盟删除导购推广 编辑:程序博客网 时间:2024/05/21 06:15


注:截图虽然指向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,成功!


希望能给你带来帮助,生活愉快:)


0 0