Unity iOS构建报错:Player data archive未找到,求解决方案
碰到这个问题我太熟悉了,结合你用的Unity 5.6.1f1和Xcode 9.2版本,给你几个针对性的解决步骤,你可以挨个试:
检查Unity Build Settings的关键配置
打开Unity的Build Settings面板,先确认如果是正式构建,别勾选Development Build选项。然后进入Player Settings的iOS标签页,检查Scripting Backend设置——Unity 5.6默认是Mono,你可以切换成IL2CPP再切回Mono,触发一次配置刷新;另外确保Streaming Assets的打包规则没有把Data目录排除在外,默认情况下Unity会自动打包整个Data文件夹的。彻底清理后重新生成Xcode项目
先把之前生成的Xcode项目文件夹删掉,回到Unity里点击Build Settings里的Clean Build(5.6版本有这个选项),然后重新导出Xcode项目。打开Xcode后,先执行Product > Clean Build Folder(快捷键Cmd+Shift+K),接着关闭Xcode,找到Derived Data的路径(在Xcode偏好设置的Locations里能看到),把整个Derived Data文件夹删掉,再重新打开Xcode构建,这样能彻底清除缓存导致的路径问题。验证Xcode项目里的Data目录是否正确打包
打开生成的Xcode项目,选中你的Target,切换到Build Phases标签,找到Copy Bundle Resources列表,确认Data文件夹(里面包含data.unity3d)已经在列表里。如果没找到,就手动把Unity导出的Data文件夹拖到这个列表里,注意选择Create folder references而不是Create groups,这样才能保证目录结构正确。排查设备/模拟器的路径差异和权限
这个错误提示会 fallback到本地文件系统,有可能是模拟器的路径解析问题——你可以试试直接用真实iOS设备构建测试,模拟器的沙箱路径有时候会和真机不一致。另外检查Xcode的Info.plist,确保没有误删Unity自动添加的文件访问权限,不过5.6版本导出的项目默认权限是没问题的,除非你手动修改过。版本兼容性调整(备选方案)
Unity 5.6.1f1是比较老的版本,虽然官方说支持Xcode 9,但确实存在一些小兼容性问题。如果上面的方法都没用,你可以试试降级到Xcode 8.x版本(Unity 5.6对Xcode 8的兼容性更稳定),或者把Unity升级到5.6系列的最新补丁版本,比如5.6.7f1,这个版本修复了不少iOS构建的已知bug。
另外补充一句:这个错误提示有时候只是日志级别的警告,不一定会导致游戏崩溃,你可以先尝试运行游戏,如果能正常启动加载资源,可能只是路径日志的小问题;但如果游戏闪退或者资源加载失败,就必须按上面的步骤逐一排查了。
内容的提问来源于stack exchange,提问作者Farhan

