信息属性列表(Info.plist)中图标和启动图片的路径

4
我希望在一个项目中添加几个不同的资源文件夹,这些文件夹包含不同的应用程序图标。
然后,在项目目标中设置5个不同的应用程序。我为每个应用程序创建了不同的info.plist。如何为每个应用程序指定不同的图标文件和启动图像文件?
我将有5个不同的包含图标图像的文件夹,例如app1 / icon.png app2 / icon.png。
我尝试将路径添加到plist中,但似乎无法捕获文件。
如果我尝试在Targets-Summary选项卡中添加图标文件,它只会将它们复制到根文件夹并覆盖以前的文件。
我可以通过添加前缀到图像中进行快速修复,例如app1_icon.png,app2_icon.png。
我相信有更好的方法来解决这个问题。
2个回答

2

如何在单个Xcode项目中为多个iOS TARGET应用程序添加单独的图标和其他文件


假设您有多个iOS应用程序,在Xcode中共享一个公共代码库。 可能正在创建类似应用程序的Lite/Pro,Free/Paid或独特的外观版本。 您已经找到了如何复制TARGETS,并且希望已经找到了如何为它们各自指定单独的.plist文件。您还意识到如何使用编译器指令(即#define MACROS),在“Build Settings”>“Preprocessor Macros”中指定,以在各种Target应用程序中启用和禁用略有不同的行为。

现在您正在尝试为每个目标指定图标文件,并遇到困难。如果您尝试在想要每个目标使用具有相同文件名的不同图形资源文件的情况下使用不同的“Default*”启动图像或其他资源,则会遇到相同问题。

以下是您需要执行的操作:

  1. 为每个目标创建一个目录,例如“App-A”和“App-B”,在其中可以放置由图标和其他文件组成的相同命名的文件集。

  2. 在项目层次结构中创建与各个目标目录名称相同的Xcode组。这不是必需的,但可以使我们的生活更加轻松,如第9步所示。

  3. 将图标和其他图片添加到这些组中。是的,它们可以(并且应该)从一个目标到另一个目标具有相同的名称。例如,您可以在App-A和App-B中都有“icon-57.png”。
    提示:在将文件添加到每个组之前,将Xcode设置为针对与该组关联的目标进行构建。例如,如果您要向App-B添加图像,在Xcode界面左上方的“运行”和“停止”按钮附近,在选项菜单中选择“App-B>我的iPhone”。这将将您的图像成员资格与正确的目标相关联,并帮助您完成下一步。此提示不是必需的。

  4. 现在是重要的部分,如@rckoenes在上面的评论中建议的那样。您必须为添加的每个文件设置目标成员资格。单击每个目标,选择“Build Phases”,然后展开“Copy Bundle Resources”。您必须添加适用于该目标的图像,并删除其他目标或目标使用的图像。如果您遵循了上一步中的“提示”,那么这可能已经为您正确设置。尽管如此,在接下来的步骤中,此列表可能会受到损坏,您需要返回此处并再次进行调整。

  5. 现在,您已经完成了通用资源图像,这些图像在您的应用程序中被广泛使用。您可能已经在项目中使用了此方法,用于在每个目标中都需要呈现不同外观的图像或按钮图形。现在,它将成为现实。

  6. 图标和Default*背景图像是一个不同的故事,因为有目标摘要面板,可以通过拖放来填充这些资源。下一步将帮助您完成此操作。

  7. 对于您的每个目标,请将图标和启动图像文件拖动到摘要屏幕中的图像占位符中。当然,它们必须是正确的大小。Xcode将询问您是否允许将这些文件复制到项目的根目录。允许它,稍后您将删除它们。在随后的过程中,Xcode将请求权限覆盖已经存在于根目录中的文件。再次允许它。

  8. 在Xcode中,删除已出现在项目根目录中的所有新复制的图标和启动器图像文件。允许Xcode将它们移动到垃圾箱中。

  9. 最后,创建、移动和复制文件可能会对您的目标成员资格造成破坏。请返回步骤#4中的说明,并清理所有成员资格。您可以轻松地从路径跟随文件名中显示的一个目标中包含的图像,区分出错误目标的图像。这是我们应该小心创建具有匹配目标名称的目录和组的建议的原因之一,如步骤#1和#2所述。

现在,您的每个应用程序将显示正确的应用程序图标和启动器背景图像。

如果您的应用程序以前安装时没有应用程序图标或错误的图标,则可能需要删除该应用程序并重新安装才能看到新图标。


以下图片可帮助可视化多个目标:
Targets


0

通过为每个目标包含图像。

因此,app1 包括 app1/icon.png,但不包括任何其他内容,而 app2 则包括 app2/icon.png


我无法将路径添加到info.plist中,它只是无法获取icon.png。 - Kiddo
你不能将路径添加到 info.plist,图标需要在应用程序包的根目录中。你所要做的就是将这些图片包含在目标中。每个文件都有一个目标成员资格,在你不想要它们的目标中排除你不想要的文件即可。 - rckoenes
所以对于每个目标(app1,app2),我都有一个匹配的info.plist(例如app1-info.plist,app2-info.plist)。在app1-info.plist中,CFBundleIconFiles的键是相同的值(icon.png)。这意味着两个目标都使用相同的icon.png?我如何包含/排除不同的图标? - Kiddo
你需要在文件的属性检查器中使用目标成员列表,以按目标排除图标。 - rckoenes

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