Xcode构建中不包括应用程序图标

34
最新版本的 Xcode Beta 安装构建后,我找不到 iOS 应用程序图标,可能出现了什么错误?我已经包含了所需的图标尺寸,包括 1024x1024。

看这里:https://dev59.com/FqXja4cB1Zd3GeqPRnmO#48209761 看起来苹果已经悄悄地(而且令人恼火地)为iPad添加了额外的图标要求。 - Mike Gledhill
尽量确保每个图像资产文件夹中都有一个“Contents.json”,其中列出了所有资产及其映射到的设备类型。 - S.D.
23个回答

1

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

对我很有用。

这应该是CocoaPods中的一个bug,如此处讨论的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”。这应该解决您的问题!


1
这个问题是由于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

结束

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


0
在我的情况下,在我进行了更改之后,应用程序图标开始在Finder中正确显示。
<key>CFBundleIconFile</key>
<string>AppIcon</string>

进入

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

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


0

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 install 命令

注意:确保替换以下路径:
Pods-IconTest/Pods-IconTest-resources.sh
其中 IconTest 是您的应用程序名称。

或者您可以通过搜索 .sh 文件来获取该路径:(请参考图片)

enter image description here


0
经过数天的研究,我找到了问题所在。在我的情况下,罪魁祸首是Xcode 10 Beta,导致iOS 11上缺少应用程序图标的问题。
我降级到Xcode 9.4.1,现在图标也出现在iOS 11上了。

0

在我的情况下

  • Xcode 10.3
  • macOS 10.14.5

我有一个使用.icns而不是.xcassets的旧项目。 即使我...

  • 删除了所有图标文件;
  • Copy Bundle Resources构建阶段中删除了所有图标文件的引用;
  • 确保输出应用程序包资源中没有旧的.icns文件;事实上,那里绝对没有.icns文件!
  • 清理、深度清理项目构建文件夹,在重新构建之前手动删除~/Library/Developer/Xcode/DerivedData
  • Assets.xcassets添加到项目中,并测试了各种重命名此捆绑包的方法:imagesImagesIcons等;
  • 创建并导入从Icon Set Creator生成的图标集图像;该图标集适用于一个新的空的macOS Cocoa项目。

对我有效的是一些绝望的尝试之一:

  • 更改Bundle Identifier并确保一切仍然能够构建:这涉及到许多Xcode建议对项目元数据进行一键修复,例如https://dev59.com/2FcP5IYBdhLWcg3wtMH_#45976427以及重新生成.entitlements文件。
  • 从目标的Info.plist中删除并重新添加CFBundleIconFIle属性。将其命名为AppIcon
  • 在目标的General设置中设置App Icon属性,使用我的.xcassets
  • 经历了.xcassets在我不知情的情况下生成另一个空的AppIcon,名为AppIcon-2,因此手动从.xcassets中删除它,然后将目标的App Icon重置为AppIcon
  • .xcassets重新添加到Copy Bundle Resources构建阶段。

重新构建后,这次正确的.icns将被复制到应用程序包的资源文件夹中。


0

我也搜索了几个小时,寻找答案。似乎有各种问题会导致iOS设备上显示空白应用程序图标。根据我的搜索,我怀疑XCode需要非常特定的参数来使用作为应用程序图标的图像,这些参数是由用户的图像创建/编辑软件预定义的,相对晦涩难懂。XCode应该更加宽容。

我的解决方案是将我的图像的精度从16位整数改为8位整数。就是这样。我已经更新了我的图像创建/编辑软件GIMP,并注意到新图像的默认精度在更新中已更改。

我尝试了其他人提出的每一个解决方案,包括但不限于:将颜色配置文件更改为SRGB,确保图像大小正确,对info.plist文件进行更改,确保图像名称与Contents.json文件相关联,重新构建应用程序以及重启设备。这是一个令人沮丧的问题。希望这能帮助其他人。


0

在尝试了一堆解决方案之后,这是我找到的解决方法:

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

然后删除以下文件中对这些文件的引用:

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

最后,在我的 App > Build Phases > Copy Pod Resources 下

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

之后,为了保险起见,我进行了清理、清理构建文件夹,然后删除了派生数据。关闭 Xcode 并重新打开,就完成了!

希望这能帮助到某个人,我也花了大约半天时间来解决这个问题...


0

正如 Andrew Dunkin在另一个回答中提到的,我的图像资源没有包含在“复制Bundle资源”构建阶段中。我花了比应该更长的时间来寻找这个解决方案,所以希望能为其他人节省一些时间。

  1. 进入 项目 -> 构建阶段
  2. 打开 复制Bundle资源 下拉菜单
  3. 确保您的包含图像资源的文件夹已包含在此阶段中。否则请添加。(我的资源文件夹名称为 Assets.xcassets

一些截图将更有帮助。 - leonardosccd

0
在我的情况下,我有一个名为“Images”的资源文件,我必须创建一个名为“Assets”的资源文件。然后在其中创建一个AppIcon。

Step 1

Step 2

Step 3

Step 4


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接