Xcode资产目录:每个图像只有一个副本

时间:2014-02-06 11:28:56

标签: ios objective-c xcode

所以我创建了一个有四个位置的资产目录:两个用于iPhone,两个用于iPad。现在我把我的图像拖到相应的位置。

我的问题:假设我在iPhone @ 2x和iPad @ 1x上使用相同的图像。但是Xcode会创建一个图像副本,尽管已经存在完全相同的图像。

所以我试图通过this answer手动解决这个问题。我打开.imageset文件夹并在Contents.json文件中编辑“filename”,如下所示:(我还删除了文件夹中的重复图像。)

{
  "images" : [
    {
      "idiom" : "iphone",
      "scale" : "1x"
      "filename" : "myImage@1x.png"
    },
    {
      "idiom" : "iphone",
      "scale" : "2x",
      "filename" : "myImage@2x.png"
    },
    {
      "idiom" : "ipad",
      "scale" : "1x",
      "filename" : "myImage@2x.png"
    },
    {
      "idiom" : "ipad",
      "scale" : "2x",
      "filename" : "myImage@4x.png"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

构建之后,我查看.app文件和Assets.car文件,其中包含Xcode资产目录。

Assets.car文件的文件大小似乎比我预期的要大。好像我删除的重复图像在构建过程中重新添加。

要查看是否属实,我将Contents.json中的每个“文件名”更改为我的@ 4x图像:

{
  "images" : [
    {
      "idiom" : "iphone",
      "scale" : "1x"
      "filename" : "myImage@4x.png"
    },
    {
      "idiom" : "iphone",
      "scale" : "2x",
      "filename" : "myImage@4x.png"
    },
    {
      "idiom" : "ipad",
      "scale" : "1x",
      "filename" : "myImage@4x.png"
    },
    {
      "idiom" : "ipad",
      "scale" : "2x",
      "filename" : "myImage@4x.png"
    }
  ],
  "info" : {
    "version" : 1,
    "author" : "xcode"
  }
}

构建之后,我检查了Assets.car的文件大小。它比以前大得多。大约是“myImage@4x.png”大小的四倍 - 虽然在我的.imageset文件夹中,只有一个“myImage@4x.png”。所以我假设Xcode在构建过程中添加了该图像的三个副本。

有谁知道如何阻止Xcode添加这些不必要的副本?如果您的应用包含许多资产目录,那么应用规模可能会显着增加......

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

  

切片是为不同的目标设备创建和提供应用包变体的过程。

来自https://developer.apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/AppThinning/AppThinning.html

应用切片会阻止应用大小增加,因为只有特定于设备的资源才会下载到客户设备。

关于从开发人员角度来看的上传大小,您的担忧似乎是正确的。