我有一个应用程序,它有 2 个变体,只是品牌不同。对于每个版本,我在资产目录中都有一个 AppIcon 和 LaunchImage。我为每个版本创建了不同的目标。在第二个版本中,当我尝试在第二个资产目录中选择 AppIcon 时,它只是默认为第一个。删除第一个资产目录似乎可以解决它,但我更喜欢一个不那么“hacky”的解决方案。
7 回答
我认为到目前为止我提出的最佳解决方案是在后续资产目录中重命名资产。例如,您可能有 2 个资产目录,其中包含名为 AppIcon 和 LaunchImage 的资产。在第二个资产目录中,我将 AppIcon 和 LaunchImage 重命名为 AppIcon1 和 LaunchImage1。所以现在我可以在目标构建设置的“常规”部分中选择它们。
- 对两个目标使用相同的资产目录。
- 检查它是否包含在两个目标中(使用文件检查器检查目标成员资格)。
- 在每个目标上选择适当的资产名称(图标)。
这应该可行,我将它与 8 个目标一起使用,所以......
顺便说一句,我发现有时启动图像在使用少数目标时不起作用,因此您可能需要复制然后选择它(Xcode 错误)。
就我而言,我正在使用可可豆荚。可可豆荚脚本Pods-resources.sh
不知何故导致了这个问题。从脚本中删除资产部分解决了这个问题。
确保清理您的项目并删除派生数据文件夹。
要删除的部分可以在这里找到:
在经历了很多挫折之后,我拥有了干净、成功、独立的图像资产。这对我有用:
我使用 XCode 为第一个目标(文件、新建、文件、资产)创建图像目录。它仅具有该目标的成员资格。正如 Mark Horgan 建议的那样,我将内部 appIcon 和 launchImages 命名为,只是为了让自己更容易。
接下来,我使用删除引用的选项从我的项目中删除了该目录。
我重复了第 1 步并为第二个目标创建了一个图像目录。它仅具有该第二个目标的成员资格。将目录分配给我的目标很棘手,因为 XCode 仅提供“不使用图像目录”作为选项。我选择了那个选项,然后 XCode 提供了“使用资产目录”。我选择了我的新catagot。我再次将内部 appIcon 和 launchImages 命名为引用第二个目标,这样我就可以识别它。
与 2 中一样,我使用删除引用删除了目录。
离开 XCode 片刻,我打开了一个 Finder 窗口并找到了我的两个不同的 images.xcassets 文件,它们已被 XCode 放在不同的目录中。我将这些文件重命名为每个引用它们的目标。(我也将它们移到主文件夹中,但当然这是一个偏好。)
回到 XCode,我(重新)添加了 xcassets 文件,一次一个,确保它们被适当地添加到目标并复制到资源中。
然后在 XCode 中,我选择了每个目标并使用 General 选项卡为每个目标正确指定图像目录。
我正在运行几个目标,每个目标都有自己的资产目录文件,包括 AppIcon、LaunchImage 和我在故事板中用于背景的自定义。
听起来我遇到了同样的问题,在为 App Icons 和 Launch Images 选择资产目录时,它在构建时使用了错误的目录。我通过修改每个资产目录(.xcassets 文件)的“目标成员资格”来解决它。它已设置为每个 xcassets 文件只有与其相关的目标。因此,每个资产目录只选择一个目标。现在,每个目标都可以使用正确的 AppIcon 和 LaunchImage。
我使用了@user216661 解决方案,但就我而言,我不必执行步骤 2-7。
我为特定目标创建了一个具有特定名称的资产文件夹(在我的例子中,每个目标一个资产文件夹)。然后我通过从 Finder 拖放图像将图像添加到那些 xcassets 文件夹中。图标和启动图像也是如此。我不必为每个目标自定义图形名称。
在此解决方案中,您不会在资产文件夹之外存储任何图形。
在构建设置选项中修改资产怎么样。对我来说,它有效。