应用程序图标不包含在从Xcode 9构build

从最新的Xcode Beta 6安装构build时,我看不到iOS AppIcon。可能的错误是什么?

我已经包括所需的图标大小,包括1024×1024。

你不是一个人。

在我的项目中,我发现以前的AppIcon资源工作正常,不再导致应用程序图标被渲染。 一系列的实验发现如下:

  • 从AppIcon工作的另一个项目复制的AppIcon资源导致AppIcon在这个项目中工作,提示特定的原始AppIcon资源不能正常工作。
  • 将图像文件从非工作状态复制到正在运行的AppIcon资源导致现在正在运行的图像文件也失败。
  • 创build一个新的AppIcon资源,并插入原始的应用程序图标图像也导致一个空白的应用程序图标。

结合在一起,这个阶段的要点可能是图像文件本身有问题。 我因此尝试了各种步骤来解决这个问题:

  • 用我通常的预处理应用程序Prepo重新导出所有的图标大小。 确保我的源图像不包含透明度。 插入那些重新创build的图标图像仍然导致一个空白的应用程序图标。
  • 使用不同的过程重新创build所有的图标大小,通过素描,并将这些图标图像插入到相同的AppIcon资源导致应用程序图标工作。
  • 创build一个新的AppIcon资源,并插入Sketch创build的图像导致应用程序图标仍然工作。

以上所有内容都表明,Xcode 9中存在一些拒绝或未能使用以前工作的应用程序图标图像的内容,并且某些用于创build之前很好的应用程序图标的过程会生成Xcode 9无法使用的图像。 也许在png规范中有一些是有效的png,但不是Xcode 9可以接受的应用程序图标。最明显的想法是具有透明度的应用程序图标可能会被拒绝,但我不相信我正在使用的图标图像包含透明度和我试图消除这个在我上面的testing。


一些用户已经报告过的完全独立的原因与CocoaPods集成有关。 请参阅这里的可能的临时修复的讨论,以及为理论上解决这个问题的Cocoapods创build的拉取请求 。 我说理论上的地址,因为我已经尝试实现这两个解决scheme,他们都没有解决我遇到的项目的问题。

为了清楚起见,请确保颜色configuration文件设置为: sRGB IEC61966-2.1 。 在我偶然发现这个问题之前,我的图标没有颜色configuration文件。

我敢肯定,其他颜色configuration文件必须工作,但我没有做testing,以确保。

这可以在预览中完成:

  1. 工具→分配configuration文件

分配Profile1

  1. selectsRGB IEC61966-2.1

分配Profile2

当您对图标执行“获取信息”时,现在应该说出正确的“颜色configuration文件”。

工作/非工作的示例获取有关两幅图像的信息

我的应用程序图标有同样的问题。 他们在一些设备上显示,但不在其他设备上 我进一步研究了这个问题,结果发现并不是所有的图标都被压扁了,而且所有的图标都有不正确的颜色空间(Adobe RGB)。 我将所有图标拼合并转换为SRGB颜色空间,然后replace现有的图标。 所有图标现在完美显示。

在尝试各种解决scheme,例如上面提到的“将颜色configuration文件(sRGB IEC61966-2.1)设置为图标”“CocoaPods解决scheme”或者“在应用程序设置中将应用程序图标源名称更改为不同资产名称”之后 ,我发现了一个非常基本的解决scheme:

  1. 清理你的项目。
  2. 〜/ Library / Developer / Xcode / DerivedData / )清除派生数据
  3. 进入“项目 – >build设阶段”
  4. find“复制软件包资源并将其作为列表的最后一项拖动”
  5. 卸载应用程序,如果它已经在那里,然后运行项目。

find截图,以便更好地理解

之前https://ibb.co/bwoGhb

之后https://ibb.co/jfrrFw

注意: – 只需将“复制束资源”的位置改为向上,就可以检查项目中app-icon的创build问题。

一旦发现另一个简单的修复

我和XCode 9.0有同样的问题,一个在XCode 8下工作得很好的项目,当我升级解决scheme时,iOS 10突然失去了它的图标(只在iPad上)。

把我的头发,做了sRGB的事情,做透明的事情。

原来,我的目标info.plist文件中仍然有以下空条目

CFBundleIcons〜ipad公司

我很久以前转移到目标生成设置中指定。

解决办法是简单地从info.plist文件中删除这个条目(点击有用的小“ – ”button。重build和testing,一切都是完美的一次。

编辑:这需要在gym中间,我不知道该怎么办。 当文件夹出现在文件夹中时,立即运行错误修复将会起到一定作用。 如果有人能帮助改善这一点,请让我知道!

我用Fastlane来解决这个问题,而且我编写了一个shell脚本,作为解决问题的一条通道。 修复本身是来自用户stubyte在这个线程中的代码。

这是我的archive_fix.sh脚本:

 #!/bin/bash # navigate to latest archive created cd ~/Library/Developer/Xcode/Archives foo=$(ls -t | head -n1) && cd $foo line=$(ls -t | head -n1) && cd "$line" # bug fix find Products/ -name Info.plist -print0 | xargs -0n1 plutil -replace BuildMachineOSBuild -string 16A323 

在我的Fastfile里面,我跑了:

 sh("./archive_fix.sh") 

我花了一整天的时间在这个上面。 我检查了我的PNG文件,以确保没有透明度,以确保正确的RGB设置,我也改变了这里讨论的podfile。 没有工作。 升级到Xcode 9 / iOS 11似乎打破/改变的东西,因为以前的图标显示为我的同一个应用程序。

无论如何,固定它的是改变Assets.xcassets(默认= AppIcon)中的iOS App Icon的名称,并且还要更改Build Settings中的“Asset Catalog App Icon Set Name”以与新的名称。

狠狠地,我得到这个工作后,我更新了在Assets.xcassets内的AppIcon中的所有图像,我又得到了一个空白的图像! 重复上述步骤和第二次解决的问题。

问题:

1.应用程序图标不出现在iOS 11或Xcode 9上。

2. iPhone上可见的应用程序图标,而不是iPad。

解决scheme,为我工作:

这个问题似乎与Xcode 9和iOS 11的构build过程有关。过去,Apple一直使用〜iPad扩展来区分iPhone和iPad的资产。

info.plist中有一个关键字“CFBundleIcons〜ipad”的字典,它没有任何项目(就像在Xcode 9中出现的那样),这导致bundle从info.plist文件中取代images.xcassets,从而得到图像。 Xcode 9上的应用程序图标未显示。

从.plist文件中删除这个键为我的构build工作,而其他人没有。

从.plist中删除“CFBundleIcons〜ipad”键

一个简单的方法来改变颜色configuration文件是使用Automator。 每个文件和文件夹做一个工作

截图Automator

并保存它。 那么你可以标记你的资产中的所有图标文件,并select作业。 所有图标的configuration文件将被制作:)

来自gales_vasile的答复: https ://forums.developer.apple.com/thread/86290

为我工作。

它应该是CocoaPods中的一个错误,正如这里讨论的那样https://github.com/CocoaPods/CocoaPods/issues/7003我遇到了同样的问题,但是我按照下面的步骤修复了它:

1)将此代码添加到Podfile:

 post_install do |installer| copy_pods_resources_path = "Pods/Target Support Files/Pods-IconTest/Pods-IconTest-resources.sh" string_to_replace = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"' assets_compile_with_app_icon_arguments = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${BUILD_DIR}/assetcatalog_generated_info.plist"' text = File.read(copy_pods_resources_path) new_contents = text.gsub(string_to_replace, assets_compile_with_app_icon_arguments) File.open(copy_pods_resources_path, "w") {|file| file.puts new_contents } end 

2)更改您的应用程序的copy_pods_resources_path并运行“pod更新”。 这应该解决你的问题!

1-将此代码添加到Podfile:

 post_install do |installer| copy_pods_resources_path = "Pods/Target Support Files/Pods-IconTest/Pods-IconTest-resources.sh" string_to_replace = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"' assets_compile_with_app_icon_arguments = '--compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" --app-icon "${ASSETCATALOG_COMPILER_APPICON_NAME}" --output-partial-info-plist "${BUILD_DIR}/assetcatalog_generated_info.plist"' text = File.read(copy_pods_resources_path) new_contents = text.gsub(string_to_replace, assets_compile_with_app_icon_arguments) File.open(copy_pods_resources_path, "w") {|file| file.puts new_contents } end 

2-吊舱安装

注意:请确保您replace:Pods-IconTest / Pods-IconTest-resources.sh

因为IconTest是你的应用程序的名称

或者你可以通过search.sh来获得这个path:(检查图像)

在这里输入图像说明

在您的图标集中有不正确的图标大小可能导致应用程序图标不显示@ iOS11。 经过多天的调查,我发现这个条目在我的生成日志中:

显示所有消息,筛选“图标”。 警告:ApplicationIcons.appiconset/Icon-40@2x.png是80×80,但应该是60×60。

虽然这个消息出现,我的应用程序图标总是不显示(即将看到默认的iOS应用程序标志)。 我更正了问题图标文件(使用正确大小的图像交换),现在我的应用程序图标始终显示。 出于某种原因,更改“资产目录应用程序图标集名称”已将此问题更正为一次性。 随后的应用程序构build会导致默认图标再次显示。

在我的情况下,其中一个Pod包含.xcasset。 删除它解决了这个问题。

在我的情况下,我改变后,应用程序图标开始在Finder中正确显示

 <key>CFBundleIconFile</key> <string>AppIcon</string> 

 <key>CFBundleIconFile</key> <string>AppIcon.icns</string> 

在Info.plist中。 我的XCode版本是8.3.3