应用程序图标不包含在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 。 在偶然发现这个问题之前,我的图标没有颜色配置文件。
我确定其他颜色配置文件必须正常工作,但我还没有完成测试。
这可以通过以下方式预览:
- 工具→分配配置文件
- 选择sRGB IEC61966-2.1
当您对图标执行获取信息时,它现在应该说正确的颜色配置文件。
我的App图标遇到了同样的问题。 它们显示在某些设备上但不显示在其他设备上 我进一步研究了这个问题,发现并非所有的图标都被展平,并且所有图标的颜色空间都不正确(Adobe RGB)。 我将所有图标展平并转换为SRGB色彩空间,然后替换现有图标。 所有图标现在都显示完美。
在尝试了各种解决方案,如上面所述的“Asigning color profile(sRGB IEC61966-2.1)to icons”和“CocoaPods solution” ,或者“在Appect设置中将App Icon Source name更改为不同的资产名称”之后 ,我找到了一个非常基本的解决方案,如下所示:
- 清除您的项目。
- 在( 〜/ Library / Developer / Xcode / DerivedData / )清除派生数据
- 转到“项目 – >构建阶段”
- 找到“复制捆绑资源并将其拖动为列表的最后一项” 。
- 卸载应用程序(如果已存在),然后运行项目。
查找截图以便更好地理解。
之前 ( 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文件中删除此密钥适用于我的构建,而其他人没有。
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上。