如何将大量资源文件添加到monotouch项目?

时间:2013-02-03 18:02:45

标签: xamarin.ios include project xamarin

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

但是,该项目需要大量的时间来编译。如果我在代码中稍作修改,项目会再次重新编译。这需要很多时间。

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

有没有解决方案?

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

由于

3 个答案:

答案 0 :(得分:1)

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

  1. 添加您的文件夹和所有文件,并将其标记为内容
  2. 为iPhone / iPad构建项目并从MonoDevelop运行
  3. 从您的项目中删除您的数据折叠
  4. 清洁解决方案
  5. 在您的代码中进行所需的任何更改,在设备中进行数据维护!!!
  6. 这改变了所有!!!在此之前,当我需要对我的代码进行微小的更改时,我需要等待大约15'才能构建和上传。现在只需1分钟!!!

答案 1 :(得分:0)

  1. 将图片放在单独的类库中
  2. 将所有文件标记为嵌入资源
  3. 为每个资源(在项目文件中)添加逻辑名称
  4. <EmbeddedResource Include="Images\Folder\Filename.ext">
        <LogicalName>LogicalNameForImage</LogicalName>
    </EmbeddedResource>
    

    4。将资源加载为

    UIImage.FromResource(yourAssembly, "LogicalNameForImage"); 
    

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

答案 2 :(得分:0)

在MonoDevelop的未来版本中(我的补丁未能及时发布即将推出的4.0版本),这将不再是一个问题。

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

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

从我自己的测试中,对于包含大量图像文件的项目,这会为大量改进构建时间。

与此同时, 可以做的是备份iphone-optimize脚本(应该位于/Applications/Xcode.app下的某个位置),然后将其修改为不会粉碎图像文件。然后,一旦你完成了,就去预先粉碎你项目中的所有png文件。

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

相关问题