应用程序图标不包含在Xcode的构建中

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

我已经包含了必需的图标大小,包括1024×1024。

你不是一个人。

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

  • 从AppIcon工作的另一个项目复制的AppIcon资源导致AppIcon在此项目中工作,表明特定的原始AppIcon资源无法正常工作。
  • 将图像文件从非工作复制到正在运行的AppIcon资产导致工作现在也失败了。
  • 创建新的AppIcon资源,并插入原始应用程序图标图像同样导致了一个空白的应用程序图标。

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

  • 使用我通常的预处理应用程序Prepo重新导出所有图标大小。 确保我的源图像不包含透明度。 插入这些重新创建的图标图像仍然会产生一个空白的应用程序图标。
  • 使用不同的流程,通过Sketch重新创建所有图标大小,并将这些图标图像插入到同一AppIcon资源中,从而使应用程序图标正常工作。
  • 创建新的AppIcon资源,并插入Sketch创建的图像,导致应用程序图标仍然有效。

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


已经为某些用户报告的完全独立的原因与CocoaPods集成有关。 请参阅此处的可能临时修复的讨论以及为理论上解决此问题的Cocoapods创建的拉取请求 。 我说理论上是地址,因为我已经尝试过实施这两种解决方案,而且他们都没有在我遇到它的项目中解决问题。

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

我确定其他颜色配置文件必须正常工作,但我还没有完成测试。

这可以通过以下方式预览:

  1. 工具→分配配置文件

分配Profile1

  1. 选择sRGB IEC61966-2.1

分配Profile2

当您对图标执行获取信息时,它现在应该说正确的颜色配置文件。

工作/不工作的示例获取两个图像的信息

我的App图标遇到了同样的问题。 它们显示在某些设备上但不显示在其他设备上 我进一步研究了这个问题,发现并非所有的图标都被展平,并且所有图标的颜色空间都不正确(Adobe RGB)。 我将所有图标展平并转换为SRGB色彩空间,然后替换现有图标。 所有图标现在都显示完美。

在尝试了各种解决方案,如上面所述的“Asigning color profile(sRGB IEC61966-2.1)to icons”“CocoaPods solution” ,或者“在Appect设置中将App Icon Source name更改为不同的资产名称”之后 ,我找到了一个非常基本的解决方案,如下所示:

  1. 清除您的项目。
  2. 在( 〜/ Library / Developer / Xcode / DerivedData / )清除派生数据
  3. 转到“项目 – >构建阶段”
  4. 找到“复制捆绑资源并将其拖动为列表的最后一项”
  5. 卸载应用程序(如果已存在),然后运行项目。

查找截图以便更好地理解。

之前https://ibb.co/bwoGhb

之后https://ibb.co/jfrrFw

注意: – 您可以通过简单地将“复制捆绑资源”的位置更改为向上方向来检查项目中app-icon的创建问题。

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

我在XCode 9.0上遇到了同样的问题,这个项目在XCode 8下工作得非常好,而当我升级解决方案时,iOS 10突然失去了它的图标(仅在iPad上)。

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

结果我在目标info.plist文件中仍然有以下空条目

CFBundleIcons〜ipad公司

我很久以前就开始在目标构建设置中指定它。

解决方案是简单地从info.plist文件中删除此条目(单击有用的小“ – ”按钮。重新构建并测试,一切都再次完美。

编辑:这需要在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应用程序图标的名称,还更改构建设置中的“资产目录应用程序图标集名称”以与新对齐名称。

扼杀,在我开始工作之后,我在Assets.xcassets中更新了AppIcon中的所有图像,我又得到了一张空白图像! 重复上述步骤,问题第二次解决。

问题:

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

2.应用程序图标在iPhone上可见但在iPad中不可见。

解决方案对我有用:

问题似乎在于Xcode 9和iOS 11的构建过程。过去,Apple一直在使用~iPad扩展来区分iPhone和iPad的资产。

info.plist有一个字典,其密钥为“CFBundleIcons~ipad”,没有任何项目(如Xcode 9中所示),这导致bundle从info.plist文件而不是images.xcassets中获取图像,因此Xcode 9上的应用程序图标未显示。

从.plist文件中删除此密钥适用于我的构建,而其他人没有。

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

TL; DR:创建“复制捆绑资源”构建阶段

经过一天半的尝试,在这个和其他线程上几乎每个解决方案,我发现了一个非常不同的修复,对我有用。 查看我的构建文件夹中的app包,我注意到App Icon png文件没有被复制到其中。 我从头开始创建了一个空白的应用程序,添加了一个应用程序图标,在该空白应用程序中,它确实复制了图标文件。 什么赋予了什么?

空白应用程序具有“复制包资源”构建阶段,该阶段复制了Assets.xcassets包。 我的没有。 所以我创建了一个,添加了我的Images.xcassets,并且presto change-o,我的存档得到了validation。 NB我很确定我以前从未有过这个构建阶段,但是我能在一个月前提交一个版本…

就我而言,没有一个解决方案有效。

我的图标没有显示,因为它们没有正确的尺寸 。 一旦我正确调整它们的大小,我的问题就解决了。

来自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 update”。 这应该可以解决你的问题!

这个问题是由iOS 11的CocoaPods引起的。经过一些研究,我找到了一个解决方案:

  post_install do |installer| copy_pods_resources_path = "Pods/Target Support Files/Pods-XXX/Pods-XXX-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 

只需将上面的内容添加到podfile并在终端中执行pod install 。 但是上面的代码有限制。 可能有这样的条件,比如我们有多个pod然后我们需要在循环中运行。

  post_install do |installer| installer.aggregate_targets.each do |target| copy_pods_resources_path = "Pods/Target Support Files/Pods-Fixr/Pods-Fixr-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 

结束

当有多个文件时,它工作正常。

更改颜色配置文件的简单方法是使用Automator。 为每个文件和文件夹创建一个Job

截图Automator

并保存它。 然后,您可以标记资产中的所有图标文件,然后选择作业。 所有图标的配置文件将被制作:)

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- pod安装

注意:请确保替换它:Pods-IconTest / Pods-IconTest-resources.sh

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

或者你可以通过搜索.sh获得这条路径:(查看图片)

在此处输入图像描述

图标集中图标大小不正确可能导致应用程序图标无法显示@ iOS11。 经过多天的调查,我在构建日志中找到了这个条目:

显示所有消息,过滤“icon”。 警告:ApplicationIcons.appiconset/Icon-40@2x.png为80×80,但应为60×60。

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

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

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

 CFBundleIconFile AppIcon 

 CFBundleIconFile AppIcon.icns 

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

在尝试了一堆这些解决方案之后,这就是为我解决的问题:

1)。 删除任何Pod文件夹中的任何.xcassets文件夹

然后删除对这些文件的任何引用:

2)。 Pods> Target Support Files> Pods-YourApp-resources.sh

不幸的是,在我的App> Build Phases> Copy Pod Resources下

3)。 删除对相同.xcassets路径的任何引用

之后为了安全起见我做了一个Clean,Clean构建文件夹,然后删除了Derived Data。 关闭Xcode并重新打开,瞧!

希望这对某人有所帮助,我花了大约半天的时间来解决这个问题……

经过几天的研究,我发现了问题,在我的情况下,罪魁祸首是xcode 10 beta导致ios 11上缺少app图标问题。

我降级到xcode 9.4.1,现在图标也出现在ios 11上。