在 Xcode 9/iOS 11 中将应用程序图标自定义为构建阶段

Customize app icon as build phase in Xcode 9/iOS 11

我的应用程序设置为根据正在构建的配置向应用程序图标添加横幅。它是按照这些步骤完成的。

https://www.raywenderlich.com/105641/change-app-icon-build-time

从 Xcode 9/iOS 11 开始,这似乎不再有效。图像仍然被正确修改并且它们存在于应用程序包中,但它们没有被用作设备上的应用程序图标。

有什么办法可以再做一次吗?

我在这方面进行了挖掘。问题是图标(以及资产目录中的所有其他内容)被打包到一个 .car 文件中,然后使用它而不是单个文件。我不知道为什么实际的图标文件仍然被复制到构建文件夹中(也许它们被用于表示模糊的地方,比如 xcode 中的构建列表或类似的东西)。如果您想更改构建脚本中的图标,则可以使用 actool 重新打包 .car 文件。或者您需要在编译前更改图像。或者,您可能会拆开 xcode 中的编译脚本并找到它打包 .car 文件的位置,然后在那里更改一些 pre-trickery。无论如何,更改中间构建文件夹中的图标将非常困难。

这是我最终采用的解决方案。

  1. Assets.xcassets
  2. 中删除应用程序图标
  3. 为每个需要自定义图标的配置创建新的 xcassets。我将它们命名为 AppIcon-{CONFIGUATION}.xcassets
  4. 为发布版本创建默认 AppIcon.xcassets 文件。
  5. 在目标构建设置中,将以下内容添加到 Excluded Source File Names
$(SRCROOT)/$(PRODUCT_NAME)/AppIcon*.xcassets
  1. 同样在目标构建设置中,将以下内容添加到 Included Source File Names,根据需要为每个配置进行自定义。
$(SRCROOT)/$(PRODUCT_NAME)/AppIcon-Debug.xcassets

这将导致构建的应用程序仅包含正在构建的配置的应用程序图标资源。这也可以扩展到其他资产。