复制资产/资源使 iOS 测试令人沮丧

Posted

技术标签:

【中文标题】复制资产/资源使 iOS 测试令人沮丧【英文标题】:Copying assets/resources makes iOS testing frustrating 【发布时间】:2013-09-25 12:34:42 【问题描述】:

我正在开发一个 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

【问题讨论】:

100MB的数据文件每次都不一样?还是总是相同的数据? 他们确实改变了路线,但很少。偶尔,一大堆二进制资产会被替换/删除/添加。更常见的是,可以更新配置文件。但是我构建/运行应用程序的 9/10 次,资产没有改变,这是我想要测试的代码更改。 【参考方案1】:

Xcode 内置的“复制文件构建阶段”是将文件复制到产品的常规方式。你有什么理由不使用它吗?

如果需要,您可以从“编辑器”->“添加构建阶段”菜单添加其他复制阶段。

如果文件都包含在一个文件夹中,但不应手动添加到 Xcode 项目中,则可以使用文件夹引用(项目导航器中的蓝色文件夹)。

这个构建阶段的好处是它使用了Xcode的依赖跟踪,所以它不会复制没有改变的文件。

【讨论】:

我不记得了,但我认为一个原因。我得检查一下! 好的,所以我添加了我现在使用的实际脚本。你能告诉我更好的设置吗? 这个答案似乎让我走上了一条更好的道路,所以我给了你赏金,尽管我还没有 100% 解决它。如果您愿意在答案中添加内容,那就太好了。【参考方案2】:

我曾经开发过一个包含超过 1 GB 静态数据的应用。幸运的是,当使用“Build&Run”时,应用程序包不会从设备中删除,而是简单地就地提取(当非本地化文件确实被本地化等时会产生很多令人讨厌的问题,但这是一个不同的话题) .从应用商店重新安装或使用临时部署确实删除/清理应用程序包。

我滥用了这个“功能”,只构建和运行代码,在后续调试构建中忽略了数据,并在发布构建时将其放回。

如果这个技巧仍然有效,我不知道,但值得一试。要以更简洁的方式执行此操作,您可以尝试使用相同的设置创建 2 个目标,使 100mb 文件仅成为其中一个的成员。

【讨论】:

以上是关于复制资产/资源使 iOS 测试令人沮丧的主要内容,如果未能解决你的问题,请参考以下文章

使用新资源/资产归档 iOS ipa

如何显示和加载 iOS 应用程序资源/资产文件夹中的音频文件?

在 Android 中将资产或原始文件或资源文件作为 File 对象读取

在 setContentView 上找不到资源异常

按需资源“0资产包”

iOS 铃声开关使网络音频静音