0

我在一个目录中有很多 png 图像。如果更新,我已将其作为内容/复制添加到项目中。我可以毫无问题地从应用程序加载它们。

但是,该项目需要大量时间来编译。如果我对代码做一点改动,项目就会重新编译。这需要很多时间。

我尝试添加另一个项目,将文件添加到新项目中,但是我无法从应用程序访问文件。

有什么解决办法吗?

当然,当我将应用程序调试到 iPad 中时,上传+安装需要很多时间。这些文件永远不会改变,所以......有什么方法可以一次复制所有内容吗?

谢谢

4

3 回答 3

1

我刚刚发现了一个技巧。当您从 MonoDevelop 环境上传和安装时,monotouch 似乎不会删除目录,所以:

  1. 添加您的文件夹和所有文件并将它们标记为内容
  2. 为 iPhone/iPad 构建您的项目并从 MonoDevelop 运行它
  3. 从您的项目中删除您的数据文件夹
  4. 清洁溶液
  5. 在您的代码中进行您需要的任何更改,您的数据会重新存储在设备中!!!

这一切都改变了!!!在此之前,当我需要对我的代码进行小幅更改时,我需要等待大约 15 分钟才能构建和上传。现在只有1分钟!!!

于 2013-02-04T09:11:55.597 回答
0
  1. 将图像放在单独的类库中
  2. 将所有文件标记为嵌入式资源
  3. 为每个资源添加一个逻辑名称(在您的项目文件中)
<EmbeddedResource Include="Images\Folder\Filename.ext">
    <LogicalName>LogicalNameForImage</LogicalName>
</EmbeddedResource>

4. 加载资源为

UIImage.FromResource(yourAssembly, "LogicalNameForImage"); 

嵌入式资源按需加载,而不是在程序集加载时加载。

于 2013-02-04T00:50:47.933 回答
0

在 MonoDevelop 的未来版本中(我的补丁没有及时发布到即将发布的 4.0 版本),这将不再是问题。

目前在 MonoDevelop 3.x 中发生的情况是,在构建项目时,它只会将已更改的图像复制到应用程序包中,但是,在构建之后,MonoDevelop 会调用与 Xcode 一起安装的脚本,该脚本会iphone-optimize扫描整个应用程序目录并用于pngcrush粉碎所有图像(它还将所有 plist 文件转换为二进制 plist)。如果您有很多图像,这就是导致构建时间如此缓慢的步骤。

就在 4.0 分支关闭以进行 QAing 之后,我编写了一个补丁来避免调用iphone-optimize脚本的需要。相反,MonoDevelop 将做的是它只会直接调用pngcrush更改的图像,将正确的应用程序目录位置作为输出参数传递给,这样我们就可以避免额外的文件复制。pngcrush

根据我自己的测试,这极大地缩短了具有大量图像文件的项目的构建时间。

同时,您可以做的是备份iphone-optimize脚本(应该位于下面的某个位置/Applications/Xcode.app),然后修改它以不破坏图像文件。然后,一旦你完成了这些,去预粉碎你项目中的所有 png 文件。

(注意:当带有我的补丁的 MonoDevelop 最终发布时,它还可以选择为已经预先粉碎图像的开发人员禁用调用 pngcrush)。

于 2013-02-05T14:15:19.537 回答