0%

记一次Mac上Unity打ab包Error解决过程

环境

Mac, Unity2017.4.15f1

错误描述

在打包的过程中,到打ab那一步,会跳出提示框,并说”Moving file failed. … No Such file or directory”
如图
image

在Cancel两次后会提示:
“An asset is marked with HideFlags.DontSave but is included in the build”

诱因

在上次构建成功和第一次失败间做了以下两件事

  1. 删了原来的XUPorter库,换了UnityEditor.iOS.Xcode,但文件在引用UnityEditor.iOS.Xcode时,没加#if UnityEditor
  2. 在自动构建的时候,按了X,强行停止了一次打包

查issue时得到的建议

  1. 用到UnityEditor的地方都要加#if
  2. chmod 755
  3. 重装Unity
  4. 重启系统
  5. 重装系统= -
  6. 删杀毒软件和一些可能会锁住文件的软件 (win下)
  7. ……
    由于看过的网页太多就不一一列出处了,沿着错误描述的两行关键词去google,应该上面列的这些你都会看到

解决过程

根据上面的建议,我的执行顺序及方法如下,但这几个方法执行完毕后都未使ab包正常打出来,持续跳此框。但在执行最后的解决方案时,以下这6个步骤已执行。

  1. 文本搜索后给所有用到UnityEditor的地方加了#if
  2. 删除了项目目录下Library, Assets/StreamingAssets, Temp,以及网上提到的各种可能会有cache的地方
    但有些解决方案中的Cache目录在本机上并不存在,不知道是不是版本差异,比如 ~/Library/Caches/Unity/自己项目名
  3. 重启
  4. 重clone工程
  5. 重命名原来Application下的Unity夹(相当于移动了),并重新在那个位置装了一个新的Unity。
  6. 重启

最后解决的方法

在重启后打ab包失败和成功之间做了这两件事。

  1. 下了一个Uninstall unity的软件,找到了一个之前未清除的Unity cache文件夹,于是删除了,如图
    image
    这个cache文件夹之前并没有查到过,还是软件靠谱啊……把软件地址贴出来https://nektony.com/how-to/uninstall-unity-on-mac
    下这个是因为直觉,怎么都觉得是有cache,于是上网查怎么彻底卸载Unity(保证之前的Unity没有残留)
  2. 拉了下git,可能是文件的移动/增减,导致Unity放弃了原本的ab包cache

事实上我并不知道这两件事到底哪件事使得unity不再出现移不动文件的报错,有时间再看看源码Unity打ab包的代码到底干了什么事,把cache丢哪儿了,下一次的打包和上次到底有什么关联。
希望后人遇到这个问题的时候,不要像我一样卡半天了……由衷希望这个解决方案能帮到搜到此文的你。