我正在开发一个iOS应用程序,它涉及大约100Mb的数据文件,这些文件必须被复制到应用程序包中。我这样做是一个构建步骤;但是,这会发生我构建的每个时间以及每次时间运行应用程序。因此,如果我构建应用程序以测试代码编译,然后测试它,文件将被复制两次!
对于拥有大型数据文件的应用是否有最佳做法可以避免此问题,或者如果不能,我该如何改进?
我基本上只有一个“复制媒体文件夹”构建阶段,它通过bash运行一些rsync命令。即使我刚刚运行一个已经构建的应用程序,这个运行的事实真的很烦人,尤其是在真实设备上进行测试时。
我的实际“复制媒体文件夹”构建阶段执行此操作:
CONTENTS_PATH="${TARGET_BUILD_DIR}/${CONTENTS_FOLDER_PATH}"
echo CONTENTS_PATH: $CONTENTS_PATH
rsync -rvC ../rundir/assets $CONTENTS_PATH/Ogre3D
rsync -rvC ../rundir/config/ $CONTENTS_PATH/Config
答案 0 :(得分:1)
Xcode内置的“复制文件构建阶段”是将文件复制到产品的常规方法。你有没有理由不使用它?
您可以从“编辑器”添加其他复制阶段 - >如果需要,请“添加构建阶段”菜单。
如果文件全部包含在文件夹中但不应手动添加到Xcode项目中,则可以使用文件夹引用(项目导航器中的蓝色文件夹)。
此构建阶段的优点是它使用Xcode的依赖关系跟踪,因此它不会复制未更改的文件。
答案 1 :(得分:0)
我曾经开发过一个包含超过1 GB静态数据的应用。幸运的是,当使用“Build& Run”时,应用程序包不会从设备中删除,而是简单地就地提取(当非本地化文件进行本地化等时会产生许多令人讨厌的问题,但这是不同的话题)。从应用商店重新安装或使用ad-hoc部署 删除/清理应用包。
我滥用这个“功能”只是为了构建和运行代码,在后续的调试版本中省略数据,并在进行发布版本时将其重新放入。
如果这个技巧仍然可行,我不知道,但值得一试。要以更干净的方式执行此操作,您可以尝试使用相同的设置制作2个目标,使100mb文件成员只有其中一个。