为啥我的 XCode 项目包含错误的 iOS 应用程序图标文件?

Posted

技术标签:

【中文标题】为啥我的 XCode 项目包含错误的 iOS 应用程序图标文件?【英文标题】:Why does my XCode project include the wrong icon file for my iOS Application?为什么我的 XCode 项目包含错误的 iOS 应用程序图标文件? 【发布时间】:2010-11-03 16:42:40 【问题描述】:

我正在创建我的应用程序的精简版,并使用 Chris Fletcher 的博客 here 作为为多个应用程序设置 Xcode 项目的指南。除了图标文件,我的一切都很好。

以下是我所拥有的概述:

2 个 info.plist 文件(每个版本的应用程序一个) 在我的付费 info.plist 中,我引用了图标条目的图标“IconPaid”。在我的 Xcode 项目中,我添加了 IconPaid.png 和 IconPaid@2x.png。 在我的 lite info.pist 中,我为 Icon 条目引用了图标“IconFree”。在我的 Xcode 项目中,我添加了 IconFree.png 和 IconFree@2x.png。

当我去构建这两个应用程序时,我的 lite 应用程序会显示付费图标。我查看了我的 lite 应用程序的包内容,果然包含了 IconPaid 文件,但没有包含 IconFree 文件。我更进一步,在我的应用中打印出 CFBundleIconFile 的值,它正确显示为“IconFree”。

所以我的问题 - 除了 plist 文件之外,Xcode 项目中引用的图标文件在哪里?我认为这是唯一的地方......

【问题讨论】:

【参考方案1】:

听起来您的免费目标正在复制图标的付费版本而不是免费版本。查看 Targets/Project-Name/Copy Bundle Resources 并检查免费版本是否正在复制正确的图标文件。

我不确定为什么 IconPaid.png 会显示在免费应用程序中(假设您的免费目标的构建设置引用了正确的 info.plist)。您可能还想清除所有目标并删除中间构建文件,并从您的模拟器或设备中删除旧版本。

【讨论】:

就是这样。我检查了捆绑资源,它包含 PaidIcons 而不是 FreeIcons。老实说,我不知道 PaidIcon 是如何出现在 iPhone 上的 Lite 版本的,因为 info plist 肯定没有引用它。但是,从捆绑资源中删除 PaidIcons 并添加 FreeIcons 似乎已经成功了。

以上是关于为啥我的 XCode 项目包含错误的 iOS 应用程序图标文件?的主要内容,如果未能解决你的问题,请参考以下文章

编译包含 iOS 8 App Extension 的 Xcode 项目时生成错误

为啥 XCode 会抛出重复的符号错误?

为啥“cordova build ios”不更新 Xcode 项目?

无法在 Xcode 中分发我的 iOS 版 Flutter 应用程序 - “包中的 ipa 包含无效字符”

为啥我的弹出框在 iPhone 6 Plus 上的 iOS 8.1 中崩溃? iOS 8 工作(实际上是 Xcode 6.0 到 6.1 的错误)

为啥应用存档在 iOS、swift、xcode 9.2 中使用自定义框架失败