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

时间:2017-09-13 18:11:11

标签: ios xcode ios11 xcode9

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

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

从Xcode 9 / iOS 11开始,这似乎不再起作用了。图片仍在正确修改中,并且存在于应用包中,但它们并未用作设备上的应用图标。

有没有办法再次这样做?

3 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,但是在iOS 10.3中,他们添加了对在运行时直接从代码修改应用程序图标的支持。如果你需要在图标上添加文字,可能会有点棘手但不应该是不可能的。

更多信息:

https://www.hackingwithswift.com/example-code/uikit/how-to-change-your-app-icon-dynamically-with-setalternateiconname

编辑:

我做了一些挖掘,似乎有一个解决方案。您可以在此主题中阅读更多内容:App Icons not included in build from Xcode 9

答案 1 :(得分:0)

我在这挖了。问题在于,图标(以及资产目录中的所有其他内容)都打包到一个.car文件中,然后代替单个文件使用。我不知道为什么仍然将实际的图标文件复制到构建文件夹中(也许它们用于表示晦涩的地方,例如xcode中的构建列表等)。如果要更改构建脚本中的图标,则可以使用actool重新打包.car文件。否则您将需要更改图像以进行预编译。或者,您可能会分解xcode中的编译脚本,并找到将.car文件打包的位置,然后进行更改,然后在其中进行一些修改。无论如何,要更改中间构建文件夹中的图标将非常困难。

答案 2 :(得分:0)

这是我最终要解决的问题。

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

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