iOS:通过XCode Target构建资源包

问题描述 投票:4回答:2

我想通过xcode目标从我的静态库的资源文件创建资源束。我看到Three20拥有一个需要导入的.bundle文件。

我该怎么做?

ios xcode bundle target
2个回答
4
投票

捆绑包只是具有特殊结构和扩展名.bundle的目录。您可以在documentation中了解更多详细信息。

编辑:

重要的是,捆绑包只是一个带有特殊扩展名的普通文件夹。例如,如果您有一个名为MyBundle.bundle的文件夹和一个名为image.png的图像,则可以用[UIImage imageNamed:@"MyBundle.bundle/image.png"];加载它,因此,不需要通过Xcode目标对其进行构建。实际上,它在iOS项目中不可用。您可以在项目中或外壳程序脚本中具有“复制文件”构建阶段。

这是简单而强大的。例如,如果您遵循框架文档中列出的特殊结构,则可以使用简单的方法,shell脚本或ant任务或rake文件将静态库构建到Frameworks中。只要输出目录符合该结构并命名为Something.framework,即使在iOS上,也可以将其用作框架。


0
投票

我知道已经晚了8年,但是由于我偶然发现了这个问题,所以其他人很有可能会这样做,所以我想我会提供有用的答案。

步骤1.创建新目标

enter image description here

  • 确保您在Project Navigator中选择了您的项目”
  • 单击“目标”列表底部的+
  • 步骤2.创建macOS捆绑包

enter image description here

我们将在步骤3中将其转换为iOS捆绑包

第2步(续)。创建macOS捆绑包

enter image description here

  • 命名您的捆绑包
  • 单击“完成”
  • 步骤3.将基本SDK从macOS更改为iOS

enter image description here

  • 确保已选择新的资源包目标
  • 转到构建设置
  • 查找Base SDK,并将此值从macOS更改为iOS
  • 至此,您的问题在技术上已经完成(为iOS创建Resource Bundle目标,但是需要一些配置才能使其正常工作]

步骤4.替换iOS捆绑资源

enter image description here

  • 确保已选择应用程序目标(not资源包)
  • 转到构建阶段
  • 选择所有资源
  • -按钮将其删除
  • 第4步(续)。替换iOS捆绑资源

enter image description here

  • +按钮将新的捆绑包资源添加到iOS应用程序(未显示)
  • 选择捆绑商品
  • 点击“添加”
  • 步骤5.设置依赖关系

enter image description here

  • 打开Dependencies部分(仍在“构建阶段”下并且仍在您的应用程序内,而不是资源包中)
  • 单击+按钮添加新的依赖项
  • 步骤5(续)。设置依赖项

enter image description here

  • 选择资源包项目
  • 点击“添加”
  • 现在您完成了!

完成所有这些步骤后,您将构建与iOS兼容的资源包并将其嵌入要加载的应用程序内部。它不是那么简单,很多文章可能都说不支持此功能,但是我已经在已发布的应用程序中使用了此功能,并且效果很好。

[请记住,如果您现在想向应用程序中添加任何资源(PNG,XIB文件等),则需要将其添加到bundle

中而不是应用程序中,例如:

enter image description here

重要的陷阱

设置完成后,再检查一次资源包的构建设置。查找标题为“ Versioning System”的设置。该值必须设置为None。如果将其设置为Apple Generic,当您尝试推送到应用商店时,您will会遇到问题!

Apple的版本控制系统将创建一个*_vers.c文件,对其进行编译,然后将此二进制文件嵌入到您的包中。由于这不是有效的CFBundleExecutable,它将导致您的应用被拒绝,并显示错误ITMS-90171

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.