Xcode设置AppIcon和LaunchImage图片资源,需求图片的尺寸、需求此图片的位置等问题总是很朦胧,每次设置总是Google一下就OK了,趁公司项目告一段落,决定就此问题深入研究一下,这里记录一下自己遇到的问题与填坑经历!
图片资源的提取
首先利用工具提取某APP中得图片资源,这种方式非常简便、易操作!喜欢那个App的图片资源都可以,比较随意!
没有请美工朋友帮忙原因有三:
- 费时又费力:(费时:朋友和自己的时间)(费力:那就是朋友的事了...O(∩_∩)O)
- 欠人情:毕竟朋友工作也很忙哒!有句话怎么说的来滴?能动手的尽量别吵吵!额.....sorry,自己动手丰衣足食!对!就是这句!
- 沟通成本:我的需求需要和朋友之间沟通,这无疑就增加了沟通的成本。
所以苦逼的事还是自己来吧!毕竟这不是公司的项目,只是自己的爱好领域的研究!其实研究一下还是很好玩的!
推荐一款图片资源提取工具:
非常简单好用的图片资源提取工具!使用步骤如下:
步骤一:在iTunes内下载某个App的ipa文件,下面我是提取的新浪微博的App,因为新浪微博在天朝是很有代表性的社交软件,个人也比较喜欢刷微博,因此偶就选择了它!罪过!罪过!现在iTunes下载不了APP了。
步骤二:
打开图片提取工具Extract:
如上图所示,将ipa文件拖拽到Extract工具相应的图标内即可提取图片文件!
步骤三:
拖拽文件至Extract工具!
步骤四:
步骤五:
当Extract工具处理完成后,会产生一个存放提取图片的文件夹,例如:
这里文件夹目录截屏截不全,目录结构为:图标提取/年-月-日/时-分-秒/微博 7_3_0_ipa/xx.png
到此图标的提取就完成了!所需图片在全在此文件夹内!
新建Xcode工程 设置AppIcon和LaunchImage图片
- 设置AppIcon图标:
点击App Icons Source 后面的灰色向右的箭头:
初始状态如下图所示,Xcode8创建iphone项目,默认就只支持iOS7.0及以后,当然可以选择你需要支持的iOS版本。
点击选择支持版本
选择iOS1.0 and later
这些图标的都是些什么鬼呢?其实在不用看官方文档我们也可以猜出来的!右键点击AppIcon,选择Show in Finder,如下:
右键选择Contents.json文件,选择Xcode打开:
Contents.json文件的内容如下:
我们可以看出由键值“images”对应的字典数组内,是由不同尺寸的AppIcon字典组成!“size”键值对应为图标大小(点为单位),“scale”键值对应为@2x图标还是@3x图标!这些都为系统自动生成的!在这里就能知道需要图标的尺寸!但是接下来还是需要看看官方文档,哪些图标是必须的,除非你有所有尺寸的图标,就不需要担心了!但是图标尺寸不全,我们只需要将必须的图标设置好,即使不设置其它不必要的图标也是OK的!
快捷键:
command
+shift
+0
打开苹果官方文档!在线浏览可能会有点慢,毕竟在墙内,翻墙吧或者下载到本地浏览也是可以的!
点击搜索栏,输入
Icons
即可:
使用向导中存在非常简单明了的图表Icons for iPhone-only Applications:
其中File Name命名规则可以自定义,因为我在设置的时候,发现新浪微博的图标命名规则与文档中得命名规则并不相同,但是使用时也是可以的!Used For为使用图标的位置,App Store和Ad Hoc哪些图标是必须的,哪些是可选但推荐的等等!
- 设置AppIcons
将提取的新浪微博的AppIcons图标拖拽到新创建的MyBlog工程的AppIcon内,如图:图标会自动对应显示!
接下来看下AppIcon目录下的Contents.json文件内容有何变化!
可以看出每个图标对应的字典多出了一个键值对,“filename”键对应尺寸相应AppIcon图标!
-
设置LaunchImage
如下图所示:
接下来点击Launch Images Source 右侧的向右的灰色按钮,跳转如下界面:
勾选图中红色箭头所指的选项,因为创建的工程为iPhone工程,并只支持竖屏,所以这里只勾选iPhone竖屏的情况即可!
后续的设置和AppIcons设置基本相同,但是LaunchImage图标的命名规则是需要遵循官方文档的命名规则!
其Contents.json文件内容如下:
“subtype”键对应的值为需要显示LaunchImage的尺寸!
下面列举的情况请与上图字典列表对号入座!
- 不存在“subtype”键,存在“scale”键!
- “scale”键对应的值为1x,则为非retina屏3.5inch屏幕。
- “scale”键对应的值为2x,则为retina屏3.5inch屏幕。
- 存在“subtype”键,存在“scale”键!
- “subtype”键对应的值为“retina4”,“scale”键对应的值为2x,则为retina屏4inch屏幕。
- 存在“subtype”键,存在“scale”键, 存在“minimun-system-version”键!
- “subtype”键对应的值为“736h”,“minimun-system-version”键对应的值为8.0,“scale”键对应的值为3x,则为retina屏5.5inch屏幕。
- “subtype”键对应的值为“667h”,“minimun-system-version”键对应的值为8.0,“scale”键对应的值为2x,则为retina屏4.7inch屏幕。
- 不存在“subtype”键,存在“scale”键, 存在“minimun-system-version”键!
- “minimun-system-version”键对应的值为7.0(最小iOS版本为7.0),“scale”键对应的值为2x,则为retina屏3.5inch屏幕。
- 存在“subtype”键,存在“scale”键, 存在“minimun-system-version”键!
- “subtype”键对应的值为“retina4”,“minimun-system-version”键对应的值为7.0(最小iOS版本为7.0),“scale”键对应的值为2x,则为retina屏4inch屏幕。
最下面存在“minimun-system-version”键对应的值为7.0的两个字典为下图中箭头指向的红色框内所示图标对应的字典!
删除之后我们看下Contents.json文件有什么变化呢?
可以看出最下面的两个字典消失了!OK!到这里只要将对应的LaunchImage图片拖拽进去就OK了!
Like This:
记录坑坑
在设置AppIcon和LaunchImage的时候,设置不合适的时候我就会删除重新设置,来折腾了几次之后,开始报错了!而我也是一脸懵圈!莫名其妙啊!
错误提示:“xxx: resource fork, Finder information, or similar detritus not allowed”
检索资料,开发者解决方案:
- 方案一:删除DerivedData缓存文件
- 对我来说并没有什么卵用
- 方案二:进入工程目录与DerivedData目录;命令行执行“xattr -rc .”
- 对我来说依然没有什么卵用
- 方案三:StackOverFlow的大神写了个脚本,用于处理此种情况,对于脚本我不太明白,所以采用利用工具删除碎屑,后续有时间在研究下大神的脚本吧!
- 解决问题,应该是资源文件元数据错误!
清除碎屑工具
CleanDetritus
点击下图中的Clean it,然后打开你的工程目录就可以,此App会自动为你删除碎屑文件,而且还会输出Log!非常简单易用!
清除碎屑文件之后,记得Clean一下工程(养成好的习惯吧!有时候Xcode会存在缓存!)。运行工程-> Success,Done!
Zeb