没有@ 3x图像的应用程序变薄,以及某些图像是JPG时
对于即将到来的更新,我已将所有图像资源打包到资产目录中。
然而,目前我没有@ 3x版本的大部分图像。 我已经检查过模拟器,并使用iPhone 6 Plus @ 2x版本。
我不介意这种行为有两个原因:
- 对于我正在使用的图像来说,结果足够好
- 我的用户中只有50%使用iOS 9.如果我添加@ 3x图像,则对于较旧的操作系统,我的应用程序的大小将会大幅增加
虽然图像加载正确的模拟器iPhone 6加,我有点担心会发生什么事情时,我的应用程序。 特别是,与应用稀薄iPhone 6 Plus的用户恐怕会得到一个应用程序没有任何图像:)
所以,我有两个问题:
- 如果我没有提供@ 3x图像,那么在iPhone 6上加载2倍后,我的更新将在App Store中生效?
- 我仍然可以从应用程序细化中受益,因为拥有@ 2x和@ 3x显示的用户不会下载@ 1x图像(反之亦然)? 或者在这种情况下应用稀疏function无法工作,用户将获得相同的资产,而不考虑其设备的屏幕?
这些都是微不足道的问题,但我不能在网上find任何信息,当你不遵循苹果的指导方针时,不会在资产目录中提供@ 3x图片,但是你的应用程序仍然可用于iPhone 6 +。 此外,我的一些图像是JPG格式,这增加了额外的不确定性,因为它不是iPhone的理想格式。
在此先感谢您的帮助!
回答你自己的问题。 归档应用程序。 导出您感兴趣的目标设备的应用:
现在查看导出的应用程序内部,看看它包含的资源。 一个.ipa
只是另一个名字的一个.zip
文件。 通过更改后缀很容易查看它。 现在您知道iPhone 6 Plus用户将从App Store下载哪些资源。
我使用Matt提出的程序进行了几个额外的testing:
- 当最低部署目标是iOS 6时,不会生成Assets.car。 除非提供“.jpg”扩展名作为图像名称的一部分,否则
[UIImage imageNamed:]
将返回nil
图像 - 当最小部署目标是iOS 7时,会生成Assets.car,但只包含那些在资产目录中导入为PNG的图像。 所有的JPGs被复制到Assets.car以外。 除非提供“.jpg”扩展名作为图像名称的一部分,否则
[UIImage imageNamed:]
将返回nil
图像。 - 当最低部署目标是iOS 8时,Assets.car包含所有图像。 它的大小是13MB。 即使没有指定“.jpg”扩展名,
[UIImage imageNamed:]
正确返回JPG图像。 包含“.jpg”扩展名时,图像也会正确加载 - 当最低部署目标是iOS 9 Assets.car包含所有图像。 它的大小是11.5MB。 即使没有指定“.jpg”扩展名,
[UIImage imageNamed:]
正确返回JPG图像。 包含“.jpg”扩展名时,图像也会正确加载
我已经使用了Mattbuild议的图像提取工具从这些资源中提取图像。 我只能通过Retina设备的档案文件导出,而且我可以确认所有的图像都有正确的分辨率(即只有视网膜大小,忽视了iPad特定的图像)。 但是,该工具将所有这些文件保存为PNG格式,因此文件夹的最终大小始终大于Assets.car。
最令人惊讶的是,对于案例3和案例4,文件夹的大小是相同的(39.4MB)。而且,图像看上去完全一样。 所以,我真的不知道会发生什么,因为在这些情况下,Assets.car的大小相差2MB。
总而言之,我们仍然不确定是否可以使用这种testing方法来准确地模拟App Thinning行为。 所以,如果有人有这个亲身经历,如果他们能分享它,那将是非常棒的。
但是,假定针对AdHoc的特定设备的导出与App Store执行的实际App Thinning产生的结果相同,我们可以得出结论:
- 当部署目标是iOS 7或更高版本时,应用程序细化仅启用
- 适用于JPG图像的应用程序细化仅适用于iOS 8的最低部署目标
-
[UIImage imageNamed:]
只有在通过资源目录正确处理JPG图像时才能正确返回JPG图像,而不提供“.jpg”扩展名。 如前所述,只有在最低部署目标是iOS 8或更高版本时才会发生这种情况 - 如果指定了“.jpg”扩展名,
[UIImage imageNamed:]
始终加载正确的图像。
最后两个结论似乎与这个问题无关,但是我发现Stack Overflow有关如何正确地使用资源目录加载JPG图像的一些矛盾的观点。 有些人声称你可以在不提供“.jpg”扩展的情况下加载它们,而其他人则抱怨说这种方法无效。 我想上面的3和4详细解释了这种情况下发生了什么,以及为什么人们得到不同的结果。
获得iPhone4s和iPhone 6SPlus档案后,从一个缺less3x图像的项目
然后使用Mattbuild议的图像提取器工具 ,
部署目标iOS 7
结果如下: