内容提要
新版Xcode工程中,文件共享选项的GUI入口被移除,需手动修改Info.plist添加UIFileSharingEnabled和LSSupportsOpeningDocumentsInPlace键,以开启Finder/iTunes访问沙盒文件。Unity项目需用后处理脚本自动写入,避免导出覆盖。开启后可通过Finder或iTunes访问应用Documents目录。
延伸解读
为何需要两个键
文章提到需同时添加UIFileSharingEnabled和LSSupportsOpeningDocumentsInPlace两个键。前者是开启文件共享的基础,后者则允许文件在应用内直接打开。若只设置前者,用户可能只能通过Finder/iTunes访问文件,但应用内无法直接打开这些文件。理解两者的区别有助于避免配置不完整导致的功能异常。
Unity项目的自动化处理
Unity导出Xcode工程时会覆盖Info.plist,手动修改容易丢失。文章推荐使用后处理脚本自动写入,这能确保每次构建后配置依然存在。开发者应留意脚本需放在Editor目录下,且需正确引用UnityEditor.iOS.Xcode命名空间,否则脚本可能无法编译或执行。
文件共享的适用场景
开启文件共享主要用于开发测试阶段,如导出日志、验证资源写入等。但需注意,这也会让用户通过Finder/iTunes访问应用Documents目录,可能带来数据泄露风险。因此,生产环境应谨慎开启,或仅在测试阶段使用,并在发布前关闭该功能。
Q&A
如何在Xcode中开启iOS应用的包外存储访问?
在Xcode中打开Info.plist,右键选择Open As → Source Code,在<dict>内添加UIFileSharingEnabled键并设为true;或者通过属性编辑器添加Application supports iTunes file sharing并设为YES。
为什么新版Xcode中找不到文件共享选项?
新版Xcode工程中,文件共享选项的GUI入口被移除,因此需要手动修改Info.plist来开启。
开启文件共享后,如何通过Finder访问iOS应用的Documents目录?
开启后,在macOS Finder中连接iPhone,在侧边栏选择设备,切换到「文件」标签,即可找到对应应用并访问其Documents目录。
Unity项目导出Xcode工程后,如何保持文件共享配置不丢失?
使用后处理脚本自动写入Info.plist,在Editor目录下创建脚本,在OnPostProcessBuild中设置UIFileSharingEnabled和LSSupportsOpeningDocumentsInPlace为true。
UIFileSharingEnabled和LSSupportsOpeningDocumentsInPlace有什么区别?
UIFileSharingEnabled用于开启iTunes/Finder文件共享,允许访问Documents目录;LSSupportsOpeningDocumentsInPlace用于支持在应用中直接打开文档,两者可同时设置。
在Windows上如何访问iOS应用的文件共享?
在Windows上使用iTunes,连接设备后,在设备页面选择「应用」,然后找到「文件共享」区域,选择对应应用即可访问其文件。