ipa包更换icon(支持iOS11)
前言
在iOS11系统之前,苹果app的icon加载方式,是以info.plist的相关配置为优先的,也就是说,加载icon先去info.plist查找是否有icon配置项,有的话按配置项加载icon,没有再去Assets资源去加载icon。
而iOS11之后,苹果把两个优先级调换了,所以按之前的方式直接把包解压,把不同尺寸的icon放入包根目录,再加入icon配置项的方式不一定生效。
注意:为了兼容所有版本,最好两种方式都要做,除非确定Assets没配置icon。
一、info.plist配置方式
1、你需要一张1024*1024的icon,导入生成icon的网址,下载iOS的icon压缩包,解压得到各种尺寸的icon。
2、解压ipa包,得到Payload文件夹,打开Payload,里面是app目录,接着打开,找到并打开info.plist,配置icon的键值对。
3、按照info.plist配置的icon名修改步骤1中解压得到的icon名,尺寸要对应,然后将所以需要的icon复制到Payload文件夹。
4、重签名。
以上内容参考官方网址,下面适当翻译。
从iOS 5.0开始,通过包含CFBundleIcons
键来指定图标。 旧的应用程序可能先前通过包含CFBundleIconFiles
键来指定其图标。 如果密钥仍然存在,则应该删除该密钥(不要忘记删除任何特定于设备的变体)。 所有的应用程序都应该迁移到CFBundleIcons
键来指定它们的图标。
CFBundleIcons
键的值是一个带有两个子键的字典:CFBundlePrimaryIcon
和UINewsstandIcon
。 UINewsstandIcon
键用于报摊应用程序,否则可以省略。 CFBundlePrimaryIcon
键的值是一个字典,用于标识与该分发包关联的图标图像。 它可能包含两个子键:CFBundleIconFiles
和UIPrerenderedIcon
。 UIPrerenderedIcon键的值是一个布尔值,用于指定图像是否已经包含闪耀效果。 CFBundleIconFiles
键的值是一个字符串数组,每个字符串标识一个包中的图像。
重要:指定每张图片的名称时,最好省略任何扩展名。 省略扩展名后,系统会使用标准分辨率图像文件名自动检测图像的高分辨率(“@ 2x”或“@ 3x”)变体。 如果您包含扩展名,则必须明确指定所有图像文件(包括高分辨率变体)。
示例1 通用应用程序的示例配置。
<key>CFBundleIcons</key>
<dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>Icon-Small</string>
<string>Icon-Small-40</string>
<string>Icon-Small-50</string>
<string>Icon</string>
<string>Icon-60</string>
<string>Icon-72</string>
</array>
</dict>
</dict>
<key>CFBundleIcons~ipad</key>
<dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>Icon-Small</string>
<string>Icon-Small-40</string>
<string>Icon-Small-50</string>
<string>Icon-72</string>
<string>Icon-76</string>
<string>Icon-83.5</string>
</array>
</dict>
</dict>
如果您的应用程序支持iOS 4.3,则还必须包含CFBundleIconFiles项以指定应用程序的图标图像。 这个键的值是一个字符串数组,每个字符串标识一个包中的图像。 如果您为iPad特定的图标包含了图像,则可以将它们列在CFBundleIconFiles项下,或者将它们列在设备特定的CFBundleIconFiles〜ipad项下。 仅限iPad的应用程序应在CFBundleIconFiles项下列出其图标图像。
示例2 具有iOS 4.3部署目标的通用应用程序的示例配置。
<key>CFBundleIconFiles</key>
<array>
<string>Icon-Small</string>
<string>Icon-Small-40</string>
<string>Icon-Small-50</string>
<string>Icon</string>
<string>Icon-60</string>
<string>Icon-72</string>
</array>
<key>CFBundleIconFiles~ipad</key>
<array>
<string>Icon-Small</string>
<string>Icon-Small-40</string>
<string>Icon-Small-50</string>
<string>Icon-72</string>
<string>Icon-76</string>
<string>Icon-167</string>
</array>
上面icon对应的尺寸如下,
icon尺寸iOS6.1及以前:
iOS6.1及以前
二、car替换方式
ipa包解压Payload文件夹,打开Payload,里面是app目录,接着打开,会发现一个Assets.car文件,这是个什么鬼?也就是苹果把之前的包以一种方式压缩了一下,这里需要一个工具去解压-->替换-->重新压缩,然后替换掉原包里面的car文件。
经过网络搜索,发现了一款工具ThemeEngine,可以实现这个功能,参考的链接,这里把工具的地址贴出来,百度云,提取码 fws3,工具操作很简单,简单的拖拽即可替换相应icon。
大家有问题可以下面留言,么么。