环境
Mac, Unity2017.4.15f1
错误描述
在打包的过程中,到打ab那一步,会跳出提示框,并说”Moving file failed. … No Such file or directory”
如图
在Cancel两次后会提示:
“An asset is marked with HideFlags.DontSave but is included in the build”
诱因
在上次构建成功和第一次失败间做了以下两件事
- 删了原来的XUPorter库,换了UnityEditor.iOS.Xcode,但文件在引用UnityEditor.iOS.Xcode时,没加#if UnityEditor
- 在自动构建的时候,按了X,强行停止了一次打包
查issue时得到的建议
- 用到UnityEditor的地方都要加#if
- chmod 755
- 重装Unity
- 重启系统
- 重装系统= -
- 删杀毒软件和一些可能会锁住文件的软件 (win下)
- ……
由于看过的网页太多就不一一列出处了,沿着错误描述的两行关键词去google,应该上面列的这些你都会看到
解决过程
根据上面的建议,我的执行顺序及方法如下,但这几个方法执行完毕后都未使ab包正常打出来,持续跳此框。但在执行最后的解决方案时,以下这6个步骤已执行。
- 文本搜索后给所有用到UnityEditor的地方加了#if
- 删除了项目目录下Library, Assets/StreamingAssets, Temp,以及网上提到的各种可能会有cache的地方
但有些解决方案中的Cache目录在本机上并不存在,不知道是不是版本差异,比如 ~/Library/Caches/Unity/自己项目名 - 重启
- 重clone工程
- 重命名原来Application下的Unity夹(相当于移动了),并重新在那个位置装了一个新的Unity。
- 重启
最后解决的方法
在重启后打ab包失败和成功之间做了这两件事。
- 下了一个Uninstall unity的软件,找到了一个之前未清除的Unity cache文件夹,于是删除了,如图
这个cache文件夹之前并没有查到过,还是软件靠谱啊……把软件地址贴出来https://nektony.com/how-to/uninstall-unity-on-mac
下这个是因为直觉,怎么都觉得是有cache,于是上网查怎么彻底卸载Unity(保证之前的Unity没有残留) - 拉了下git,可能是文件的移动/增减,导致Unity放弃了原本的ab包cache
事实上我并不知道这两件事到底哪件事使得unity不再出现移不动文件的报错,有时间再看看源码Unity打ab包的代码到底干了什么事,把cache丢哪儿了,下一次的打包和上次到底有什么关联。
希望后人遇到这个问题的时候,不要像我一样卡半天了……由衷希望这个解决方案能帮到搜到此文的你。